update 表名 set text类型字段名=replace(convert(varchar(8000),text类型字段名),'要替换的字符','替换成的值') 1.update ntext: (1)varchar和nvarchar类型是支持replace,所以如果你的text/ntext不超过8000/4000可以先转换成前面两种类型再使用replace。 u
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('%'+@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
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:)!