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

转载于:https://www.cnblogs.com/craig/archive/2008/06/16/1222795.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值