语言吧技术网欢迎您投稿,程序员的世界我懂你!=====>点此登录投搞
当前位置: 首页 >>数据库 >>MSSQL >>循环替换更新SQL数据库中TEXT类型字段指定的值

循环替换更新SQL数据库中TEXT类型字段指定的值

2018/8/22 16:38:00 0人评论 3892次 作者:admin

循环替换更新SQL数据库中TEXT类型字段指定的值…

方法一(推荐):

update tablename set fieldA=replace(cast(fieldA as varchar(8000)) ,'aa','bb')这样的语句。

SQL中replace替换ntext,text字段部分内容使用说明:replace(cast(fieldA as varchar(8000)) ,'aa','bb')

大众替换普通字段方法

Update    famous_cuncuntong SET page = REPLACE(page,'aa','bb')


方法二:

(如果内容长度大于8000:varchar和nvarchar的最大长度都是8000,则采用该方法)

支持text字段处理的仅有:下面的函数和语句可以与 ntext、text 或 image 数据一起使用。


函数 语句 

DATALENGTH READTEXT 

PATINDEX SET TEXTSIZE 

SUBSTRING UpdateTEXT 

TEXTPTR WRITETEXT 

TEXTVALID


主题:text字段

1:替换


--创建数据测试环境

create table #tb(aa text)

insert into #tb select 'abc123abc123,asd'


--定义替换的字符串

declare @s_str varchar(8000),@d_str varchar(8000)

select @s_str='123' --要替换的字符串

,@d_str='000'--替换成的字符串


--字符串替换处理

declare @p varbinary(16),@postion int,@rplen int

select @p=textptr(aa),@rplen=len(@s_str),@postion=charindex(@s_str,aa)-1 from #tb

while @postion>0

begin

updatetext #tb.aa @p @postion @rplen @d_str

select @postion=charindex(@s_str,aa)-1 from #tb

end


=======以下实例经过测试==========


declare @str datetime 

declare @etr datetime 

set @str=GETDATE()

declare @a int

declare @b int

declare @c nvarchar(200)

declare @d nvarchar(200)

set @b=0

select @a=COUNT(*) from  S_TableA where Head like 'ContentUploadSUpDir%'

while @a>0

begin

 select top 1 @c=UserId,@d=Head from S_TableA where Head like 'ContentUploadSUpDir%'

 set @d=replace(@d,'ContentUploadSUpDir','/Content/Upload/SUpDir/')

 print '更新第'+cast((@b+1) as nvarchar(20))+'条 c='+@c+'  d='+@d

 update S_User set Head=@d where UserId=@c

 set @b=@b+1

 select @a=COUNT(*) from  S_TableA where Head like 'ContentUploadSUpDir%'

end

set @etr=GETDATE()

print (datediff(ss,@str,@etr))



CopyRight:2007-2018 语言吧 备案ICP:湘ICP备09009000号-15 http://www.yuyanba.com
欢迎【广东省 广州市】的朋友
内容与素材部分来源于网络,如有侵权请告知删除
分享按钮