SQL Server中text或ntext 字段内容替换方法
来源:易贤网 阅读:1028 次 日期:2014-09-17 15:59:31
温馨提示:易贤网小编为您整理了“SQL Server中text或ntext 字段内容替换方法”,方便广大网友查阅!

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),text类型字段名),'要替换的字符','替换成的值')

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 ='

set @len=len(@des)

set @str= ''--要替换的字符

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

WHILE 1=1

BEGIN

select @pos=patINDEX() - 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

更多信息请查看IT技术专栏

更多信息请查看数据库
由于各方面情况的不断调整与变化,易贤网提供的所有考试信息和咨询回复仅供参考,敬请考生以权威部门公布的正式信息和咨询为准!
关于我们 | 联系我们 | 人才招聘 | 网站声明 | 网站帮助 | 非正式的简要咨询 | 简要咨询须知 | 加入群交流 | 手机站点 | 投诉建议
工业和信息化部备案号:滇ICP备2023014141号-1 云南省教育厅备案号:云教ICP备0901021 滇公网安备53010202001879号 人力资源服务许可证:(云)人服证字(2023)第0102001523号
云南网警备案专用图标
联系电话:0871-65317125(9:00—18:00) 获取招聘考试信息及咨询关注公众号:hfpxwx
咨询QQ:526150442(9:00—18:00)版权所有:易贤网
云南网警报警专用图标