zoukankan      html  css  js  c++  java
  • sqlserver 批量修改替换text,ntext类型字段的方法

    1.先查询text,ntext类型数据的长度,修改过程中一定注意长度,过长时修改会丢弃多余的数据。

    select *  FROM  [dbo].[BoxCount_P_20190307]  datalength([pinfo])>8000

    2.数据长度全部小于8000的数据,可使用常规修改方法,把ntext数据转换成 varchar(max)

    DECLARE @oldstr VARCHAR(400)
    DECLARE @val VARCHAR(400)--替换后的新字符串
    set @oldstr = 'http://ohly.jdypf.com'--需要替换的字符串
    set @val='http://eoud.dgygpx.com';--替换后的新字符串
    update [dbo].[BoxCount_P] set [pinfo]=replace(cast([pinfo] as varchar(8000)) , @oldstr, @val)
    where [pinfo] like '%'+@oldstr +'%' and datalength([pinfo])<8000

    3.数据长度全部大于8000的数据但数据大小小于2G;可以使用replaces,但要把ntext数据转换成 nvarchar(max)

    DECLARE @oldstr VARCHAR(400)
    DECLARE @val VARCHAR(400)--替换后的新字符串
    set @oldstr = 'http://poik.kxyw123.com'--需要替换的字符串
    set @val='http://poik.dgygpx.com';--替换后的新字符串
    update [dbo].[BoxCount_P] set [pinfo]=replace(cast([pinfo] as nvarchar(max)) , @oldstr, @val)
    where [pinfo] like '%'+@oldstr +'%' 
    and datalength([pinfo])<8000

    4.数据长度有可能大于8000的修改方法(也适合小于8000的数据),不知什么原因部分修改有误???

    DECLARE @ptr binary(16)--文本指针
    DECLARE @oldstr VARCHAR(400)
    declare @dl INT--需要替换的字符串的长度
    DECLARE @val VARCHAR(400)--替换后的新字符串
    DECLARE @index INT --要插入的 开始位置
    set @oldstr = 'http://ohly.jdypf.com'--需要替换的字符串
    set @val='http://eoud.dgygpx.com';--替换后的新字符串
    set @dl = len(@oldstr)--字符串块长度
    DECLARE Updatatext_Datas CURSOR FOR --创建游标
    SELECT TEXTPTR([pinfo]),PATINDEX(@oldstr,[pinfo])-1 FROM  dbo.[BoxCount_P_20190307] --表对应修改
    WHERE  [pinfo] like  '%'+@o@valldstr+'%'  --查询条件
    OPEN Updatatext_Datas; --打开游标
    FETCH NEXT FROM Updatatext_Datas  into @ptr,@index  --读取游标数据
    WHILE @@FETCH_STATUS=0
    BEGIN
    UPDATETEXT  [dbo].[BoxCount_P_20190307].[pinfo]  @ptr @index @dl @val --更行ntext类型的数据,表名对用修改
    FETCH NEXT FROM Updatatext_Datas into @ptr,@index --读取游标数据
    END;
    close Updatatext_Datas; --关闭游标
    deallocate Updatatext_Datas; --释放游标
  • 相关阅读:
    自定义排序方式
    Ajax 调用(传值)一般处理程序(.ashx)
    把一个文件夹下的所有excel添加到datatable
    list比较交集
    禁用未登录通过连接下载文件
    加密方式
    使用response.write输出excel
    linux安装OpenCV以及windows安装numpy、cv2等python2.7模块
    哈希长度扩展攻击(Hash Length Extension Attack)利用工具hexpand安装使用方法
    yafu安装使用方法以及mismatched parens解决方法
  • 原文地址:https://www.cnblogs.com/AlexLeeLi/p/10488770.html
Copyright © 2011-2022 走看看