zoukankan      html  css  js  c++  java
  • UpdateText 使用

    Create proc [dbo].[UpdateTextColumn]

    @Table varchar(100),

    @Columns varchar(200),--eg:Column1,Column2,

    @old varchar(100),

    @new varchar(100)

    as

        
    set nocount on

        
    declare @sql nvarchar(2000)

        
    declare @Column varchar(50)

        
    declare @cpos int,@npos int

        
    set @cpos=1;

        
    set @npos=1;

        
    set @npos=charindex(',',@Columns,@cpos);

        
    while(@npos>0)

        
    begin

            
    set @Column = substring(@Columns,@cpos,@npos-@cpos);

            
    set @cpos = @npos+1

            
    set @npos=charindex(',',@Columns,@cpos);

            

            
    set @sql = 'update '+@Table+' set '+@Column+'=replace(cast('+@Column+' as varchar(8000)),@old,@new) where Datalength('+@Column+')<=8000';

            
    EXECUTE sp_executesql @Sql,

                               N
    '@old varchar(100),@new varchar(100)',

                               
    @old,

                               
    @new

            
    declare @ptr binary(16) ,@offset int,@dellen int

            

            
    set @dellen = len(@old)

            

            
    set @offset = 1

            
    while @offset>=1

            
    begin

                
    set @offset = 0

                
    set @sql = 'select     top 1 @offset = charindex('''+@old+''' , '+@Column+'), @ptr = textptr('+@Column+') from '+@Table+' where Datalength('+@Column+')>8000 and '+@Column+' like ''%'+@old+'%''';

                
    EXEC sp_executesql @Sql,N'@offset int OUTPUT,@ptr binary(16) OUTPUT,@old varchar(100)',

                                   
    @offset OUTPUT,@ptr OUTPUT,@old;

               
    if @offset > 0

                
    begin

                    
    set @offset = @offset-1

                    
    set @sql='updatetext '+@Table+'.'+@Column+' @ptr @offset @dellen @new';

                    
    EXEC sp_executesql @Sql,N'@offset int ,@ptr binary(16),@dellen int,@new varchar(100)',@offset,@ptr,@dellen,@new;

                
    end 

            
    end

    end

    go

    使用方法:exec UpdateTextColumn @tbname,@column,@old,@new
  • 相关阅读:
    Java学习01-使用maven插件tomcat搭建web maven项目
    Anaconda3安装及使用
    python标准日志模块logging及日志系统设计
    python traceback捕获并打印异常
    python time
    PIL 中的 Image 模块
    python zipfile使用
    PHP 判断用户是否手机访问
    php数组相加 两个数组键名相同 后者不能覆盖前者
    解决Ubuntu Server 12.04换了网卡MAC地址后 网络不可用的问题.
  • 原文地址:https://www.cnblogs.com/craig/p/1222795.html
Copyright © 2011-2022 走看看