• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
无忧岛主
实践是检验真理的唯一标准
博客园    首页    新随笔       管理    订阅  订阅
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

 

如果本文引用了你的文章而未注明,请及时联系我。
posted on 2015-06-25 15:52  无忧岛主  阅读(19797)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3