在给定的数据库列中用<替换所有'&lt'的最佳方法是什么?基本上执行s/&lt[^;]/</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 ('&lt; <- ok, &lt <- nok')

while 1 = 1
begin
    update test
        set val = left(val, patindex('%&lt[^;]%', val) - 1) +
                      '&lt;' +
                      right(val, len(val) - patindex('%&lt[^;]%', val) - 2)
    from test
    where val like '%&lt[^;]%'

    IF @@ROWCOUNT = 0 BREAK
end

select * from test


更好的是,这与SQL Server版本无关,并且应该可以正常工作。

关于sql - 在SQL查询中执行正则表达式(替换),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/150977/

10-16 08:04