替换数据库里面所有用户的表的数据
把表中的每条记录每个字段的包含 ‘MMCP009’ 替换成 ‘MMCP001’ 所有表,所有记录,所有字段

解决方案 »

  1.   

    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='MMCP009' 
    set @str2='MMCP001'
    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; 
      

  2.   

    update t
    set col='MMCP001'
    where
    col='MMCP009'
      

  3.   

    DECLARE hCForEach CURSOR GLOBAL
    FOR
    SELECT N'update '+QUOTENAME(o.name)
        +N' set  '+ QUOTENAME(c.name) + N' = replace(' + QUOTENAME(c.name) + ',''MMCP009'',''MMCP001'')'
    FROM sysobjects o,syscolumns c,systypes t
    WHERE o.id=c.id 
        AND OBJECTPROPERTY(o.id,N'IsUserTable')=1
        AND c.xusertype=t.xusertype
        AND t.name='varchar' or t.name='nvarchar'--自己加
    EXEC sp_MSforeach_Worker @command1=N'?'
      

  4.   


    select
    'update '+quotename(a.Name)+' set '+quotename(b.Name)+'=replace('+quotename(b.Name)+',''MMCP009'',''MMCP001'') where '+
    quotename(b.Name)+' like ''%MMCP009%'''
    from 
    sysobjects a
    join
    syscolumns b on a.ID=b.ID
    join
    systypes c on c.xusertype=b.xtype
    where
    a.xtype='U' and c.Name in('nvarchar','char')--定义类型
    用以上生成语句,在查询分析器里执行
      

  5.   

    加上条件 'where '+    quotename(b.Name)+' like ''%MMCP009%'''--用游标
    declare T cursor local for
    select
        'update '+quotename(a.Name)+' set '+quotename(b.Name)+'=replace('+quotename(b.Name)+',''MMCP009'',''MMCP001'') where '+
        quotename(b.Name)+' like ''%MMCP009%'''
    from 
        sysobjects a
    join
        syscolumns b on a.ID=b.ID
    join
        systypes c on c.xusertype=b.xtype
    where
        a.xtype='U' and c.Name in('nvarchar','char')--定义类型
    declare @s nvarchar(1000)
    open t
    fetch next from t into @s
    while @@fetch_status=0
    begin
    exec @s
    fetch next from t into @s
    end
    close t
    deallocate t