基于列名称和该列名称的值

时间:2015-06-03 13:52:08

标签: sql sql-server tsql

我需要编写一个查询:

  1. 查找所有数据库中列名的所有实例
  2. 复制包含此列名称的所有记录,根据该列名称的值更改列名称的值。
  3. 因此输入将是ColumnName,ColumnNameValue,ColumnNameNewValue

    我在这里找到了这个查询http://sqlserverplanet.com/dba/find-column-in-all-databases,它返回了我需要的查询的第一部分,但我不确定如何继续执行第2部分...

    编辑:

    第2部分我要做的是查找与Id匹配的所有记录,并在同一个表中将它们复制到不同的Id

    例如,我有这张表:

    column1    column2
    1          aaa
    2          bbb
    2          ccc
    3          ddd
    

    我希望脚本找到包含“column1”的所有表(这在第1部分中完成),然后查找column1的值为“1”的所有记录,并使用新的id复制记录“ 99“,结果将是

    column1    column2
    1          aaa
    2          bbb
    2          ccc
    3          ddd
    99         bbb
    99         ccc
    

1 个答案:

答案 0 :(得分:0)

您有两个选项,针对每个数据库查询信息架构,然后将结果合并在一起

select * from db1.information_Schema.columns
union all
select * from db2.information_Schema.columns

或使用未记录的sp_MSforeachdb函数

EXEC sp_MSforeachdb 'select * from information_Schema.columns'

当然,没有证件,它可能会改变,停止工作或无法正常工作,所以你需要接受这种风险。