sql ntext数据类型字符替换实现代码 |
本文标签:ntext,字符替换 复制代码 代码如下: ---ntext数据类型字符替换 create table tt ( sid INT IDENTITY(1,1), cont ntext ) go insert into tt(cont) values(Nfd sad fdsa 涂聚文工团 缔友计算机信息技术有限公司 可能性 桔柑 ) go update tt set cont=fd sad fdsa 涂聚文工团 可能性 缔友计算机信息技术有限公司 桔柑 where sid=1 --去空格 EXEC sp_dboption pubs, select into/bulkcopy, true --sp_dboption pubs, select into/bulkcopy, true GO DECLARE @ptrval binary(16),@i int,@k int,@f int select @i=datalength(cont) from tt where sid=1 set @k=1 while @i>1 begin select @f=CHARINDEX(SPACE(1),cont) from tt where sid=1 ---SPACE(1) set @f=@f-1 SELECT @ptrval = TEXTPTR(cont) FROM tt WHERE sid=1 if @f>0 UPDATETEXT tt.cont @ptrval @f 1 null if @k=@i break else set @k=@k+1 continue end GO --sp_dboption pubs, select into/bulkcopy, false EXEC sp_dboption pubs, select into/bulkcopy, false GO SELECT * FROM tt ---换英文字母 EXEC sp_dboption pubs, select into/bulkcopy, true GO DECLARE @ptrval binary(16),@i int,@k int,@f int select @i=datalength(cont) from tt where sid=1 set @k=1 while @i>1 begin select @f=CHARINDEX(sad,cont) from tt where sid=1 ---SPACE(1) set @f=@f-1 SELECT @ptrval = TEXTPTR(cont) FROM tt WHERE sid=1 if @f>0 UPDATETEXT tt.cont @ptrval @f 3 ggg if @k=@i break else set @k=@k+1 continue end GO SELECT * FROM tt ---中文字母 EXEC sp_dboption pubs, select into/bulkcopy, true GO DECLARE @ptrval binary(16),@i int,@k int,@f int select @i=datalength(cont) from tt where sid=1 set @k=1 while @i>1 begin select @f=CHARINDEX(涂聚文,cont) from tt where sid=1 ---SPACE(1) set @f=@f-1 SELECT @ptrval = TEXTPTR(cont) FROM tt WHERE sid=1 if @f>0 UPDATETEXT tt.cont @ptrval @f 6 涂斯博 if @k=@i break else set @k=@k+1 continue end GO SELECT * FROM tt EXEC sp_dboption pubs, select into/bulkcopy, true GO DECLARE @ptrval binary(16),@i int,@k int,@f int,@change nvarchar(20),@newstr nvarchar(20),@len int set @change=Nsad --要替换的字符 --set @len=datalength(@change) set @len=len(@change) set @newstr=Nggg --替换成的字符 select @i=datalength(cont) from tt where sid=1 set @k=1 while @i>1 begin select @f=CHARINDEX(@change,cont) from tt where sid=1 ---SPACE(1) set @f=@f-1 SELECT @ptrval = TEXTPTR(cont) FROM tt WHERE sid=1 if @f>0 UPDATETEXT tt.cont @ptrval @f @len @newstr if @k=@i break else set @k=@k+1 continue end GO SELECT * FROM tt EXEC sp_dboption pubs, select into/bulkcopy, true GO DECLARE @ptrval binary(16),@i int,@k int,@f int,@change nvarchar(20),@newstr nvarchar(20),@len int set @change=N涂聚文 --要替换的字符 --set @len=datalength(@change) --用此会出错 set @len=len(@change) set @newstr=N涂斯博 --替换成的字符 select @i=datalength(cont) from tt where sid=1 set @k=1 while @i>1 begin select @f=CHARINDEX(@change,cont) from tt where sid=1 ---SPACE(1) set @f=@f-1 SELECT @ptrval = TEXTPTR(cont) FROM tt WHERE sid=1 if @f>0 UPDATETEXT tt.cont @ptrval @f @len @newstr if @k=@i break else set @k=@k+1 continue end GO SELECT * FROM tt update tt set cont=fd sad fdsa 涂聚文工团 可能性 缔友计算机信息技术有限公司 桔柑 where sid=1 select datalength(涂聚文) select len(涂聚文) select datalength(sad) select len(sad) select len(SPACE(1)) EXEC sp_dboption pubs, select into/bulkcopy, true DECLARE @ptrval binary(16),@i int,@k int,@f int,@change nvarchar(20),@newstr nvarchar(20),@len int set @change=N涂聚文 --要替换的字符 --set @len=datalength(@change) --用此会出错 set @len=len(@change) set @newstr=N涂斯博 --替换成的字符 select @i=datalength(cont) from tt where sid=1 set @k=1 while @i>1 begin select @f=CHARINDEX(@change,cont) from tt where sid=1 ---SPACE(1) set @f=@f-1 SELECT @ptrval = TEXTPTR(cont) FROM tt WHERE sid=1 if @f>0 UPDATETEXT tt.cont @ptrval @f @len @newstr if @k=@i break else set @k=@k+1 continue end GO EXEC sp_dboption pubs, select into/bulkcopy, true DECLARE @ptrval binary(16),@i int,@k int,@f int,@change nvarchar(20),@newstr nvarchar(20),@len int set @change=N涂聚文 --要替换的字符 --set @len=datalength(@change) --用此会出错 set @len=len(@change) set @newstr=N涂斯博 --替换成的字符 select @i=datalength(cont) from tt where sid=1 set @k=1 while @i>1 begin select @f=CHARINDEX(@change,cont) from tt where sid=1 ---SPACE(1) set @f=@f-1 SELECT @ptrval = TEXTPTR(cont) FROM tt WHERE sid=1 if @f>0 UPDATETEXT tt.cont @ptrval @f @len @newstr if @k=@i break else set @k=@k+1 continue end GO |