SQL Server 中 text或ntext 字段内容替换方法

SQL Server 中 text或ntext 字段内容替换方法,第1张

概述update 表名 set text类型字段名=replace(convert(varchar(8000),text类型字段名),'要替换的字符','替换成的值') 1.update ntext: (1)varchar和nvarchar类型是支持replace,所以如果你的text/ntext不超过8000/4000可以先转换成前面两种类型再使用replace。 update 表名 set text类型字段名=replac…

update 表名
set text类型字段名=replace(convert(varchar(8000),text类型字段名),'要替换的字符','替换成的值')

1.update ntext:
(1)varchar和nvarchar类型是支持replace,所以如果你的text/ntext不超过8000/4000可以先转换成前面两种类型再使用replace。

update 表名
set text类型字段名=replace(convert(varchar(8000),'替换成的值')

update 表名
set ntext类型字段名=replace(convert(nvarchar(4000),ntext类型字段名),'替换成的值')

(2)如果text/ntext超过8000/4000,看如下例子

declare @pos int
declare @len int
declare @str nvarchar(4000)
declare @des nvarchar(4000)
declare @count int
set @des ='<requested_amount+1>'--要替换成的值

set @len=len(@des)
set @str= '<requested_amount>'--要替换的字符

set @count=0--统计次数.

WHILE 1=1
BEGIN
select @pos=patINDEX('%'+@des+'%',propxmldata) - 1
from 表名
where 条件

IF @pos>=0
begin
DECLARE @ptrval binary(16)
SELECT @ptrval = TEXTPTR(字段名)
from 表名
where 条件
UPDATETEXT 表名.字段名 @ptrval @pos @len @str
set @count=@count+1
end
ELSE
break;
END

select @count

2.alter column语句有局限性,比如不允许修改text、image、ntext 或 timestamp 列.
以下提供一个修改ntext列的例子:

Alter table tbl Add newcol ntext null
go
update tbl set newcol=col
go
EXEC sp_rename 'tbl.col','oldcol','ColUMN'
go
EXEC sp_rename 'tbl.newcol','col','ColUMN'
go
alter table tbl drop column oldcol
go

以上通过新增一列替换旧的列方法实现了将一个不允许为空的ntext修改为允许为空的ntext列(注意:以上的go不能缺少).修改表结构之后,由于视图所依赖的基础对象的更改,视图的持久元数据会过期,需要刷新视图,通过sp_refreshvIEw (可以通过sp_depends 找处相关的视图,再通过sp_refreshvIEw逐个刷新).
另外可以也可以通过一下存储过程进行刷新所有视图:

PRINT 'Refreshing all vIEws...'

DECLARE @vname sysname

DECLARE refresh_cursor CURSOR FOR
SELECT name from sysobjects WHERE xtype = 'V'
order by crdate
FOR READ ONLY
OPEN refresh_cursor

FETCH NEXT FROM refresh_cursor
INTO @vname
WHILE @@FETCH_STATUS <> -1
BEGIN
exec sp_refreshvIEw @vname
PRINT '视图' + @vname + ' refreshed'
FETCH NEXT FROM refresh_cursor
INTO @vname
END
CLOSE refresh_cursor
DEALLOCATE refresh_cursor

总结

以上是内存溢出为你收集整理的SQL Server 中 text或ntext 字段内容替换方法全部内容,希望文章能够帮你解决SQL Server 中 text或ntext 字段内容替换方法所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/1156001.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存