1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
declare @Str1 varchar(8000)
SET @Str1='参数1'
declare @Str2 varchar(8000)
SET @Str2='参数2'
 
 
SET nocount ON
 
 
declare @tableName nvarchar(100),@columnName nvarchar(100),@tbID int,@iRow int,@iResult int
declare @sql nvarchar(500)
 
 
SET @iResult=0
declare cur cursor FOR
SELECT name,id FROM sysobjects WHERE xtype='U'
 
 
open cur
fetch next FROM cur INTO @tableName,@tbID
 
 
while @@fetch_status=0
begin
declare cur1 cursor FOR
        --xtype in (231,167,239,175,99) 为char,varchar,nchar,nvarchar,ntext类型
        SELECT name FROM syscolumns WHERE xtype IN (231,167,239,175,99) AND id=@tbID
open cur1
fetch next FROM cur1 INTO @columnName
while @@fetch_status=0
begin
      SET @sql='update [' + @tableName + '] set ['+ @columnName +']= replace(cast(['+@columnName+'] as varchar(8000)),'''+@Str1+''','''+@Str2+''') where ['+@columnName+'] like ''%'+@Str1+'%''' 
      --update tablename set fieldA=replace(cast(fieldA as varchar(8000)) ,'aa','bb')这样的语句。
      exec sp_executesql @sql     
      SET @iRow=@@rowcount
      SET @iResult=@iResult+@iRow
      IF @iRow>0
      begin
print '表:'+@tableName+',列:'+@columnName+'被更新'+convert(varchar(10),@iRow)+'条记录;'
      end     
      fetch next FROM cur1 INTO @columnName
 
 
 
end
close cur1
deallocate cur1
 
 
fetch next FROM cur INTO @tableName,@tbID
end
print '数据库共有'+convert(varchar(10),@iResult)+'条记录被更新!!!'
 
 
close cur
deallocate cur
SET nocount off

您可能对以下文章有兴趣↓