鱼遇于池,池涸,相濡以沫,相鞠以湿,不若相忘于海。

while (alive) {
  object state = working & fighting & enjoying & living thanksgiving;
}
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

SQL SERVER 200中Text类型的文本替换

Posted on 2005-09-17 10:49  alittlefish  阅读(1822)  评论(1)    收藏  举报
Text类型的数据一般不同于字符串类型的数据,由于它的Size比较大,它的数据并不存在与Row中(当然你也可以用text in row指定它存于row中)。在Row中的只是它的一个指针。因此不能在存储过程中定义Text的局部变量,也不能用REPLACE方法来替换字符。如果要实现替换字符的功能,要写一个存储过程。下面是我的一个朋友写的一个实例,供参考。

CREATE TABLE #temp (rowid int,textcol ntext

INSERT INTO  #temp values (1,'aaa bbb ccc ddd eee'

INSERT INTO  #temp values (2,'aaa bbb cc ddd eee'

INSERT INTO  #temp values (3,'fff ggg ccc iii jjj'

DECLARE @from nvarchar(100), @to nvarchar(100), @pos int@len int@rowid int 

DECLARE @ptrval binary(16

SET @from='ccc' 

SET @to='hhh' 

SET @len = LEN(@from

SET @rowid = 0 

SELECT @rowid = rowid,@pos = CHARINDEX(@from,textcol)-1 FROM #temp WHERE 

CHARINDEX(@from,textcol) > 0 

WHILE (@rowid > 0

BEGIN 

SELECT @ptrval = TEXTPTR(textcol) FROM #temp WHERE rowid = @rowid 

UPDATETEXT #temp.textcol @ptrval @pos @len @to 

SET @rowid = 0 

SELECT @rowid = rowid,@pos = CHARINDEX(@from,textcol)-1 FROM #temp WHERE 

CHARINDEX(@from,textcol) > 0 

END 

SELECT * FROM #temp 

DROP TABLE #temp 

可以参阅下面的文章。

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/tsqlref/ts_nos-nz_0lyd.asp

Managing ntext, text, and image Data
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/acdata/ac_8_qd_13_8orl.asp