Sql 为什么replace函数不在字符串中替换?

Sql 为什么replace函数不在字符串中替换?,sql,sql-server,Sql,Sql Server,下面的代码并没有替换字符串中的值。不知道为什么 select top 10 marker_id, stuff((select ',' + replace(t2.text,'=>', '|') from vMARKER_DIRECTIONAL_TEXT t2 where t1.marker_id = t2.marker_id for xml path('')),1,1,'') text from vMARKER_DIRECTIONAL_TEXT t1 group by marke

下面的代码并没有替换字符串中的值。不知道为什么

select top 10 marker_id,
stuff((select ',' + replace(t2.text,'=>', '|')
from vMARKER_DIRECTIONAL_TEXT t2 
where t1.marker_id = t2.marker_id
for xml path('')),1,1,'') text
from vMARKER_DIRECTIONAL_TEXT t1 
group by marker_id

LAT:-88.303934 LON:154.632292,=> PHONE DUTY MANAGER ON 5555555 (AH) OR 
INFO CENTRE ON xxxxxx (BH),=> LOCKED GATE AT PARK ENTRANCE CODE TO ENTER 
IS 1234,=> TRAVEL WEST 3600M ON ROAD TO BUS STOP

根据你对另一个答案的评论,我的评论是正确的

更换>

在替换函数中,使用>工作

这是因为FOR XML PATH函数是encoding>as>;在文本上执行替换函数后。只有在FOR XML PATH函数运行后,>字符才会替换为编码字符串


编辑:不得不添加一个空格,因为SO一直在显示>LOL,我不知道如何让它显示为一个字符串。

所以看起来你的值在字段中有标记。你的STUFF函数正在替换打开的标签,我的评论就是答案。请给我一些惊喜:我还做了一个解释,希望能解释为什么会发生这种情况