我nvarchar(max)
在包含 substring 的表中有一个类型的列'><'
。
我需要更换'><'
并制作它'> <'
,但我只想在它不是'><\'
或时才这样做'><!'
。
有没有办法使替换功能有条件?
列中将出现多次'><'
。
谢谢你的帮助。
我nvarchar(max)
在包含 substring 的表中有一个类型的列'><'
。
我需要更换'><'
并制作它'> <'
,但我只想在它不是'><\'
或时才这样做'><!'
。
有没有办法使替换功能有条件?
列中将出现多次'><'
。
谢谢你的帮助。
为此,您可以先将要保留的序列替换为不会自然出现在列中的序列,然后替换要替换的序列,然后将其他序列切换回来。
DECLARE @x NVARCHAR(MAX) = N'<foo><blat><!--comment--><\blat><bar>';
SELECT @x = REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(@x,
'><!', '~~~~~!'), '></', '~~~~~\ '), -- hide ones you want to keep
'><', '> <'), -- replace ones you want to replace
'~~~~~!', '><!'), '~~~~~\ ', '><\'); -- un-hide the ones you want to keep
SELECT @x;
可以安装 CLR 程序集吗?正则表达式可能更直接。或者你可以通过三个替换函数调用来做到这一点。
第一个替换'><'
为,'> <'
然后两个替换'> <(exclamation)'
为'><(exclamation)'
和 。'> <(backslash)'
'><(backslash)'
不过,这最终可能会替换在第一次操作中未修改的现有文本。