sqlserver 修改替换text,ntext类型字段的两种方案

方案一 用Update和Replace

--替换语句(因为varchar(max)最大值是8000,所以大于8000的部分会被截掉)

UPDATE dbo.SNS_UserBlog SET [Description]=REPLACE(CAST([Description] AS VARCHAR(max)),'sx','')

WHERE BlogID=142

这个方案有一定局限性那就是字段的长度不能超过8000。

方案二 UPDATETEXT 方法

--更新语句

DECLARE @ptrval BINARY(16)  

SELECT @ptrval=TEXTPTR([Description])  FROM SNS_UserBlog 

WHERE BlogID=142

IF @ptrval IS NOT NULL

UPDATETEXT SNS_UserBlog.[Description] @ptrval NULL NULL 'hellotheword sx'

--替换语句(因为varchar(max)最大值是8000,所以大于8000的部分会被截掉)

UPDATE dbo.SNS_UserBlog SET [Description]=REPLACE(CAST([Description] AS VARCHAR(max)),'sx','')

WHERE BlogID=142

方案三 UPDATETEXT参数拓展方法

--替换语句

DECLARE @ptr binary(16)--文本指针

DECLARE @oldstr VARCHAR(400)

declare @dl INT--需要替换的字符串的长度

DECLARE @val VARCHAR(400)--替换后的新字符串

DECLARE @index INT --要插入的 开始位置

set @oldstr = 'sx'--需要替换的字符串

set @dl = len(@oldstr)--字符串块长度

SELECT @ptr=TEXTPTR([Description]),@val='',@index=CHARINDEX(@oldstr,[Description])-1 FROM  dbo.SNS_UserBlog

WHERE  BlogID=142--查询条件

UPDATETEXT  dbo.SNS_UserBlog.Description  @ptr @index @dl @val

 

你可能感兴趣的:(sqlserver)