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
  • 相关阅读:
    NStimer 被堵塞
    零基础学python-7.6 字符串格式化表达式
    实验记录三 通用输入输出(GPIO)
    VTK的安装配置-使用VS2010
    Python 查找Twitter中特定话题中最流行的10个转发Tweet
    ios开发之-计算器的改进
    彻查网络局部网段内Ping时断时续的问题
    hdoj-1016-Prime Ring Problem【深搜】
    WebView的截屏实现
    CentOs虚拟机能够互相ping通,但无法訪问虚拟机服务
  • 原文地址:https://www.cnblogs.com/craig/p/1222795.html
Copyright © 2011-2022 走看看