view source 
   
 
   
 
   print
   ? 
   
 
01
 create procedure replace_ntext            
 
  
02
 @table_name    nvarchar(100),   --目标表名        
 
  
03
 @field_name    nvarchar(100),   --目标字段名        
 
  
04
 @where_str        nvarchar(1000),   --该表主键字段名  如id=1       
 
  
05
 @old    nvarchar(1000),        --需要替换的字符串        
 
  
06
 @new    nvarchar(1000)         --替换后的字符串           
 
  
07
 as     
 
  
08
 begin  
 
  
09
  
 
  
10
 declare @SqlStr nvarchar(4000)      
 
  
11
 set @SqlStr = 'declare @pos int, @len int, @count int  set @count=0  set @len=len('''+@old+''') ' 
 
  
12
 set @SqlStr = @SqlStr + ' select @pos = patINDEX(''%'+@old+'%'',['+@field_name+']) - 1'+' from ['+@table_name+'] where '+ @where_str  
 
  
13
 set @SqlStr = @SqlStr + ' while @pos>0 ' 
 
  
14
 set @SqlStr = @SqlStr + ' begin'   
 
  
15
 set @SqlStr = @SqlStr + ' declare @ptrval binary(16)'      
 
  
16
 set @SqlStr = @SqlStr + ' SELECT  @ptrval  =  TEXTPTR(['+@field_name+'])   from ['+@table_name+'] where '+  @where_str  
 
  
17
 set @SqlStr = @SqlStr + ' UPDATETEXT ['+@table_name+'].['+@field_name+'] @ptrval  @pos  @len '''+ @new + '''' 
 
  
18
 set @SqlStr = @SqlStr + ' select @pos = patINDEX(''%'+@old+'%'',['+@field_name+']) - 1'+' from ['+@table_name+'] where '+ @where_str  
 
  
19
 set @SqlStr = @SqlStr + ' set  @count=@count+1 ' 
 
  
20
 set @SqlStr = @SqlStr + ' end ' 
 
  
21
 set @SqlStr = @SqlStr + ' select @count' 
 
  
22
 --print @SqlStr  
 
  
23
 execute sp_executesql   @SqlStr             
 
  
24
end