【问题标题】:How to script a REPLACE statement in SQL 2012?如何在 SQL 2012 中编写 REPLACE 语句?
【发布时间】:2013-05-16 04:32:10
【问题描述】:

首先让我说我是SQL和脚本方面的绝对菜鸟,所以请像对待小孩一样与我交谈。 ;)

我有大量包含表的数据库,我必须在其中替换特定列中的用户信息。

旧:实例 A;数据库 B、C、D、...;表 E; F、G、H、...列;值 1,2,3,...

新:实例 A;数据库 B、C、D、...;表 E; F、G、H、...列;值 1a,2a,3a,...

这里有没有人可以给我一点希望和帮助? 这份工作的规模是 3000 个数据库,所以我必须编写脚本。

感谢任何形式的帮助。

【问题讨论】:

    标签: sql replace


    【解决方案1】:
    UPDATE TableE
    SET ColumnF =  ColumnF + 'a',
        ColumnG =  ColumnG + 'a'
    WHERE Clause...
    

    【讨论】:

    • 不确定我是否解释得足够好。我将不得不用一个完全不同的值替换该值。不幸的是,这不仅仅是添加一个“a”。 :) 但是感谢您的回复。
    • 在设置部分您可以定义列的新值。您可以附加到旧值 (ColumnF = ColumnF + 'a') 或设置新值 (ColumnF = @Parameter)。你的新价值在哪里?
    【解决方案2】:

    我相信你正在寻找这样的东西。

    UPDATE b
      SET a.col1 = b.col1
         ,a.col2 = b.col2
      FROM myTableA AS a
      INNER JOIN myTableB AS b
        ON a.key1 = b.key1
    

    这里有更多示例:How can I do an UPDATE statement with JOIN in SQL?

    此处“根据其他表中的数据更新数据”下还有一个 JOIN 示例:http://msdn.microsoft.com/en-us/library/ms177523.aspx

    【讨论】:

      【解决方案3】:

      试试这个查询批量更新脚本。

      select  'IF  EXISTS(SELECT * FROM SYS.OBJECTS WHERE  OBJECT_ID = OBJECT_ID(N'''+
      '['+d.name+'].['+SCHEMA_NAME(schema_id)+'].[ '+t.name+']'''+ '))'+
      'BEGIN update ['+d.name+'].['+SCHEMA_NAME(schema_id)+'].['+t.name+'] SET '+c.name+ ' = '+c.name+ '+ ''a'''+ ' END'
      FROM sys.databases d,sys.tables AS t
      INNER JOIN sys.columns c ON t.OBJECT_ID = c.OBJECT_ID
      WHERE c.name in('F','G','H')
              and t.name='table_E';
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-07
        • 2017-08-30
        • 2012-12-22
        • 1970-01-01
        相关资源
        最近更新 更多