前提:
  比如我有数据库DB,里面有两个表A和表B,
  其中A表有两个字段a1,a2都含有字符串"XX",
      B表有两个字段b1,b2都含有字符串"XX"问题:
  如果我想批量地将表A和表B中四个字段中"XX"替换成"YY",
  (也就是说我想将一个数据库中所有表的所有字段中的某个字符串"XX"替换成另一个字符串"YY")
  由简单批处理SQL或者BAT文件吗?各位高手请赐教!

解决方案 »

  1.   

    UPDATE tb
      SET a1=REPLACE(a1,'XX','YY')
      

  2.   

    如果要动态的话..
    可以通过sys.objects,sys.columns,sys.types结合..生成替换语句.
      

  3.   

    参考
    http://topic.csdn.net/u/20081008/16/7132bbc3-571b-4297-98d9-23e4fd81776c.html
      

  4.   

    --TRY
    declare @t varchar(255),@c varchar(255) 
    declare table_cursor cursor for 
    select a.name,b.name from sysobjects a,syscolumns b ,systypes c 
    where a.id=b.id and a.xtype='u' and c.name in (--这里是要替换的类型 
    'char', 'nchar', 'nvarchar', 'varchar'
    --,'text','ntext' --这里如果你的text(ntext)类型没有超过8000(4000)长度,才可以使用

    declare @str varchar(500),@str2 varchar(500) 
    --这里是你要替换的字符 
    set @str='XX' set @str2='YY'open table_cursor fetch next from table_cursor into @t,@c while(@@fetch_status=0) begin     exec('update [' + @t + '] set [' + @c + ']=replace(cast([' + @c + '] as varchar(8000)),'''+@str+''','''+ @str2 +''')')     fetch next from table_cursor into @t,@c end close table_cursor deallocate table_cursor; 
      

  5.   

    我的数据库是ACCESS的,试验起来跟Oracle有点不一样。