刪除MSSQL數(shù)據(jù)庫text字段的替換處理示例–全表替換,看到有人提問,所以整理了一個好久以前的處理方法,以供大家參考
方法很簡單:text字段不能使用Replace,所以使用patindex
代碼如下:
-select * from Product where P_Intro like ‘%%’
–text字段的替換處理示例–全表替換
— select datalength(P_Intro),* from Product
–邀月 整理
–定義替換的字符串
declare @s_str nvarchar(4000),@d_str nvarchar(4000)
select @s_str=’‘ –要替換的字符串
,@d_str=” –替換成的字符串
–因為只能用patindex,所以對于搜索字符串做處理
set @s_str=’%’+@s_str+’%’
–定義游標(biāo),循環(huán)處理數(shù)據(jù)
declare @id bigint
declare #tb cursor for select P_ID from Product where P_Intro like ‘%%’
— where P_ID=300727 —-where P_Intro like ‘%%’
open #tb
fetch next from #tb into @id
while @@fetch_status=0
begin
–字符串替換處理
declare @p varbinary(16)
,@p1 int,@p2 int
,@rplen int,@step int,@len int
select @p=textptr(P_Intro)
,@rplen=len(@s_str)-2
,@step=len(@d_str)
,@p1=patindex(@s_str,P_Intro)
,@len=datalength(P_Intro)
,@p2=0
from Product
where P_id=@id
while @p1>0
begin
set @p2=@p1+@p2-1
updatetext Product.P_Intro @p @p2 @rplen @d_str
select @p2=@p2+1,@p1=patindex(@s_str,substring(P_Intro,@p2+1,@len))
from Product where P_ID=@id
end
fetch next from #tb into @id
end
close #tb
deallocate #tb
–顯示結(jié)果
—- select datalength(P_Intro),* from Product