如何替换sql中ntext类型数据中的某个字符?

[复制链接]
查看11 | 回复0 | 2020-4-1 11:10:52 | 显示全部楼层 |阅读模式
--替换处理declare @s_str nvarchar(4000),@r_str nvarchar(4000)select @s_str='开心'--要替换的字符串,@r_str='你好'--替换成该字符串--替换处理declare @id int,@ptr varbinary(16)declare @start int,@s nvarchar(4000),@len intdeclare @s_str1 nvarchar(4000),@s_len int,@i int,@step intselect @s_str1=reverse(@s_str),@s_len=len(@s_str),@step=case when len(@r_str)>len(@s_str)then 4000/len(@r_str)*len(@s_str)else 4000 enddeclare tb cursor local for select id,start=charindex(@s_str,[content])-1from [tb]where id=2 --替换id=1的记录and charindex(@s_str,[content])>0open tb fetch tb into @id,@startwhile @@fetch_status=0beginselect @ptr=textptr([content]),@s=substring([content],@start+1,@step)from [tb]where id=@idwhile len(@s)>=@s_lenbeginselect @len=len(@s),@i=charindex(@s_str1,reverse(@s))if @i>0beginselect @i=case when @i>=@s_len then @s_len else @i end,@s=replace(@s,@s_str,@r_str)updatetext [tb].[content] @ptr @start @len @sendelseset @i=@s_lenselect @start=@start+len(@s)-@i+1,@s=substring([content],@start+1,@step)from [tb]where id=@idendfetch tb into @id,@startendclose tbdeallocate tbgo
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行