首页 > 数据库技术 > 详细

sqlserver修改替换text,ntext类型字段的方法

时间:2019-03-07 13:10:55      阅读:678      评论:0      收藏:0      [点我收藏+]

1.先查询text,ntext类型数据的长度

select *  FROM  .[dbo].[BoxCount_P_20190307]  datalength([pinfo])>8000

2.数据长度全部小于8000的数据,可使用常规修改方法

DECLARE @oldstr VARCHAR(400)
DECLARE @val VARCHAR(400)--替换后的新字符串
set @oldstr = http://ohly.jdypf.com--需要替换的字符串
set @val=http://eoud.dgygpx.com;--替换后的新字符串
update [tongji.ggstats].[dbo].[BoxCount_P] set [pinfo]=replace(cast([pinfo] as varchar(8000)) , @oldstr, @val)
where [pinfo] like %+@oldstr +% and datalength([pinfo])<8000

3.数据长度有可能大于8000的修改方法(也适合小于8000的数据)

DECLARE @ptr binary(16)--文本指针
DECLARE @oldstr VARCHAR(400)
declare @dl INT--需要替换的字符串的长度
DECLARE @val VARCHAR(400)--替换后的新字符串
DECLARE @index INT --要插入的 开始位置
set @oldstr = http://ohly.jdypf.com--需要替换的字符串
set @val=http://eoud.dgygpx.com;--替换后的新字符串
set @dl = len(@oldstr)--字符串块长度
DECLARE Updatatext_Datas CURSOR FOR --创建游标
SELECT TEXTPTR([pinfo]),CHARINDEX(@oldstr,[pinfo])-1 FROM  dbo.[BoxCount_P_20190307]
WHERE  [pinfo] like  %+@o@valldstr+%  --查询条件
OPEN Updatatext_Datas; --打开游标
FETCH NEXT FROM Updatatext_Datas  into @ptr,@val,@index  --读取游标数据
WHILE @@FETCH_STATUS=0
BEGIN
UPDATETEXT  dbo.[BoxCount_P_20190307].[pinfo]  @ptr @index @dl @val --更行ntext类型的数据
FETCH NEXT FROM Updatatext_Datas into @ptr,@val,@index --读取游标数据
END;
close Updatatext_Datas; --关闭游标
deallocate Updatatext_Datas; --释放游标

 

sqlserver修改替换text,ntext类型字段的方法

原文:https://www.cnblogs.com/AlexLeeLi/p/10488770.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!