---ntext數據類型字符替換 ---2011-08-21 塗聚文 深圳大運會期間,政府貼出"溫馨提示",交通管制,世界之窗周邊不充許到陽台觀看,出入憑居住證,不是身份證create table tt( sid INT IDENTITY(1,1), cont ntext )goinsert into tt(cont) values(N'fd sad fdsa 塗聚文工團 締友計算機信息技術有限公司 可能性 桔柑 ')goupdate tt set cont='fd sad fdsa 塗聚文工團 可能性 締友計算機信息技術有限公司 桔柑 ' where sid=1--去空格EXEC sp_dboption 'pubs', 'select into/bulkcopy', 'true'--sp_dboption 'pubs', 'select into/bulkcopy', 'true'GODECLARE @ptrval binary(16),@i int,@k int,@f intselect @i=datalength(cont) from tt where sid=1set @k=1while @i>1begin 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 continueendGO--sp_dboption 'pubs', 'select into/bulkcopy', 'false'EXEC sp_dboption 'pubs', 'select into/bulkcopy', 'false'GOSELECT * FROM tt---換英文字母EXEC sp_dboption 'pubs', 'select into/bulkcopy', 'true'GODECLARE @ptrval binary(16),@i int,@k int,@f intselect @i=datalength(cont) from tt where sid=1set @k=1while @i>1begin 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 continueendGOSELECT * FROM tt---中文字母EXEC sp_dboption 'pubs', 'select into/bulkcopy', 'true'GODECLARE @ptrval binary(16),@i int,@k int,@f intselect @i=datalength(cont) from tt where sid=1set @k=1while @i>1begin 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 continueendGOSELECT * FROM ttEXEC sp_dboption 'pubs', 'select into/bulkcopy', 'true'GODECLARE @ptrval binary(16),@i int,@k int,@f int,@change nvarchar(20),@newstr nvarchar(20),@len intset @change=N'sad' --要替換的字符--set @len=datalength(@change)set @len=len(@change)set @newstr=N'ggg' --替換成的字符select @i=datalength(cont) from tt where sid=1set @k=1while @i>1begin 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 continueendGOSELECT * FROM ttEXEC sp_dboption 'pubs', 'select into/bulkcopy', 'true'GODECLARE @ptrval binary(16),@i int,@k int,@f int,@change nvarchar(20),@newstr nvarchar(20),@len intset @change=N'塗聚文' --要替換的字符--set @len=datalength(@change) --用此會出錯set @len=len(@change)set @newstr=N'塗斯博' --替換成的字符select @i=datalength(cont) from tt where sid=1set @k=1while @i>1begin 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 continueendGOSELECT * FROM ttupdate tt set cont='fd sad fdsa 塗聚文工團 可能性 締友計算機信息技術有限公司 桔柑 ' where sid=1select 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 intset @change=N'塗聚文' --要替換的字符--set @len=datalength(@change) --用此會出錯set @len=len(@change)set @newstr=N'塗斯博' --替換成的字符select @i=datalength(cont) from tt where sid=1set @k=1while @i>1begin 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 continueendGOEXEC sp_dboption 'pubs', 'select into/bulkcopy', 'true'DECLARE @ptrval binary(16),@i int,@k int,@f int,@change nvarchar(20),@newstr nvarchar(20),@len intset @change=N'塗聚文' --要替換的字符--set @len=datalength(@change) --用此會出錯set @len=len(@change)set @newstr=N'塗斯博' --替換成的字符select @i=datalength(cont) from tt where sid=1set @k=1while @i>1begin 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 continueendGO