在给定的数据库列中用<
替换所有'&lt'的最佳方法是什么?基本上执行s/<[^;]/</gi
笔记:
必须在MS SQL Server 2000中工作
必须是可重复的(并且不能以<;;;;;;;;;
结尾)
最佳答案
需要进行一些黑客攻击,但我们可以使用LIKE,PATINDEX,LEFT AND RIGHT和良好的旧字符串连接来实现。
create table test
(
id int identity(1, 1) not null,
val varchar(25) not null
)
insert into test values ('< <- ok, < <- nok')
while 1 = 1
begin
update test
set val = left(val, patindex('%<[^;]%', val) - 1) +
'<' +
right(val, len(val) - patindex('%<[^;]%', val) - 2)
from test
where val like '%<[^;]%'
IF @@ROWCOUNT = 0 BREAK
end
select * from test
更好的是,这与SQL Server版本无关,并且应该可以正常工作。
关于sql - 在SQL查询中执行正则表达式(替换),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/150977/