【IT168技术文档】
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