--创建测试数据
create table t(id int,var1 text)
insert into t select 1,'asdfasdfasdf<xxx>,s,fasdf(xxx),<xxx>a<xxx>a<xxx>asf'--执行更新操作
declare @str1 varchar(100),@str2 varchar(100)
declare @i int,@len int
declare @ptrval binary(16)
set @str1='<xxx>'
set @str2='<yyyy>'
set @len=len(@str1)SELECT @i = patindex('%'+@str1+'%',var1)-1 from t WHERE id = 1while @i > 0
begin
SELECT @ptrval = TEXTPTR(var1) FROM t WHERE id = 1
UPDATETEXT t.var1 @ptrval @i @len @str2
SELECT @i = patindex('%'+@str1+'%',var1)-1 from t WHERE id = 1
end
GO--查看更新结果
select * from t
/*
id var1
-- ------------------------------------------------------------------
1 asdfasdfasdf<yyyy>,s,fasdf(xxx),<yyyy>a<yyyy>a<yyyy>asf
*/
--删除测试数据
drop table t
go
create table t(id int,var1 text)
insert into t select 1,'asdfasdfasdf<xxx>,s,fasdf(xxx),<xxx>a<xxx>a<xxx>asf'--执行更新操作
declare @str1 varchar(100),@str2 varchar(100)
declare @i int,@len int
declare @ptrval binary(16)
set @str1='<xxx>'
set @str2='<yyyy>'
set @len=len(@str1)SELECT @i = patindex('%'+@str1+'%',var1)-1 from t WHERE id = 1while @i > 0
begin
SELECT @ptrval = TEXTPTR(var1) FROM t WHERE id = 1
UPDATETEXT t.var1 @ptrval @i @len @str2
SELECT @i = patindex('%'+@str1+'%',var1)-1 from t WHERE id = 1
end
GO--查看更新结果
select * from t
/*
id var1
-- ------------------------------------------------------------------
1 asdfasdfasdf<yyyy>,s,fasdf(xxx),<yyyy>a<yyyy>a<yyyy>asf
*/
--删除测试数据
drop table t
go
出来这个:修改 ntext、text 或 image 值
可通过下列方式修改 ntext、text 或 image 值: 使用数据库 API(例如 ADO、OLE DB 或 ODBC)执行 UPDATE 或 INSERT 语句,并将程序变量与 ntext、text 或 image 列的参数标记绑定。然后调用相应的数据库 API 函数,逐块向数据库发送长数据。DB-Library 支持与其 text 和 image 函数相同的功能。
使用 WRITETEXT 语句重写该列的整个数据值。
例如,以下查询将更改 New Moon Books 中 pr_info 列的内容:USE pubs
sp_dboption 'pubs', 'select into/bulkcopy', 'true'
DECLARE @ptrval varbinary(16)
SELECT @ptrval = TEXTPTR(pr_info)
FROM pub_info pr INNER JOIN publishers p
ON p.pub_id = pr.pub_id
AND p.pub_name = 'New Moon Books'
WRITETEXT pub_info.pr_info @ptrval 'New Moon Books (NMB) '
sp_dboption 'pubs', 'select into/bulkcopy', 'true'使用 UPDATETEXT 语句更新 ntext、text 或 image 列的特定数据块。
例如,以下查询用字母 z 取代 New Moon Books 中 text 列的第 88 个字符(Moon 中的第二个字母 o):USE pubs
sp_dboption 'pubs', 'select into/bulkcopy', 'true'
DECLARE @ptrval varbinary(16)
SELECT @ptrval = TEXTPTR(pr_info)
FROM pub_info pr INNER JOIN publishers p
ON p.pub_id = pr.pub_id
AND p.pub_name = 'New Moon Books'
UPDATETEXT pub_info.pr_info @ptrval 88 1 'z'
sp_dboption 'pubs', 'select into/bulkcopy', 'false'