0
点赞
收藏
分享

微信扫一扫

sql ntext 替换存储过程

​​view source​​ 




​​print​
​​?​​


​​01​​
​​create​​​ ​​procedure​​​ ​​replace_ntext ​​


​​02​​
​​@table_name nvarchar(100), ​​​​--目标表名 ​​


​​03​​
​​@field_name nvarchar(100), ​​​​--目标字段名 ​​


​​04​​
​​@where_str nvarchar(1000), ​​​​--该表主键字段名 如id=1 ​​


​​05​​
​​@old nvarchar(1000), ​​​​--需要替换的字符串 ​​


​​06​​
​​@new nvarchar(1000) ​​​​--替换后的字符串 ​​


​​07​​
​​as​​


​​08​​
​​begin​​


​​09​​



​​10​​
​​declare​​​ ​​@SqlStr nvarchar(4000) ​​


​​11​​
​​set​​​ ​​@SqlStr = ​​​​'declare @pos int, @len int, @count int set @count=0 set @len=len('​​​​''​​​​+@old+​​​​''​​​​') '​​


​​12​​
​​set​​​ ​​@SqlStr = @SqlStr + ​​​​' select @pos = patINDEX('​​​​'%'​​​​+@old+​​​​'%'​​​​',['​​​​+@field_name+​​​​']) - 1'​​​​+​​​​' from ['​​​​+@table_name+​​​​'] where '​​​​+ @where_str ​​


​​13​​
​​set​​​ ​​@SqlStr = @SqlStr + ​​​​' while @pos>0 '​​


​​14​​
​​set​​​ ​​@SqlStr = @SqlStr + ​​​​' begin'​​


​​15​​
​​set​​​ ​​@SqlStr = @SqlStr + ​​​​' declare @ptrval binary(16)'​​


​​16​​
​​set​​​ ​​@SqlStr = @SqlStr + ​​​​' SELECT @ptrval = TEXTPTR(['​​​​+@field_name+​​​​']) from ['​​​​+@table_name+​​​​'] where '​​​​+ @where_str ​​


​​17​​
​​set​​​ ​​@SqlStr = @SqlStr + ​​​​' UPDATETEXT ['​​​​+@table_name+​​​​'].['​​​​+@field_name+​​​​'] @ptrval @pos @len '​​​​''​​​​+ @new + ​​​​''​​​​''​​


​​18​​
​​set​​​ ​​@SqlStr = @SqlStr + ​​​​' select @pos = patINDEX('​​​​'%'​​​​+@old+​​​​'%'​​​​',['​​​​+@field_name+​​​​']) - 1'​​​​+​​​​' from ['​​​​+@table_name+​​​​'] where '​​​​+ @where_str ​​


​​19​​
​​set​​​ ​​@SqlStr = @SqlStr + ​​​​' set @count=@count+1 '​​


​​20​​
​​set​​​ ​​@SqlStr = @SqlStr + ​​​​' end '​​


​​21​​
​​set​​​ ​​@SqlStr = @SqlStr + ​​​​' select @count'​​


​​22​​
​​--print @SqlStr ​​


​​23​​
​​execute​​​ ​​sp_executesql @SqlStr ​​


​​24​​
​​end​​

举报

相关推荐

0 条评论