1

我正在合并几个表,我需要查询特定的列名。原因是我要压缩的这些表有 FK 候选列但没有 FK,所以我必须继续查看每个表,看看它是否包含特定的列名,这似乎有点让人眼花缭乱。

我从另一个帖子中得到了这个,但它不完整。

SELECT 'SELECT ''' + TABLE_NAME + '.' + column_name + 
   ''' FROM ' + TABLE_NAME + ' WHERE ' + 
   column_name + ' = ''[THE COLUMN NAME I AM LOOKING FOR]'''
FROM INFORMATION_SCHEMA.COLUMNS 

上面的 TSQL 似乎结构不正确,或者我遗漏了一些东西。

4

1 回答 1

2

此查询将获得与您放入参数中的任何内容相匹配的列列表(以及它们的模式和表名)@SomeColumnName

DECLARE @SomeColumnName VarChar(200) = 'Test';

SELECT S.name SchemaName, T.name TableName, C.name ColumnName
FROM sys.columns C
     JOIN sys.tables T ON C.object_id = T.object_id
     JOIN sys.schemas S ON T.schema_id = S.schema_id
WHERE C.name = @SomeColumnName;

如果您使用的 SQL Server 版本没有较新的 DMV,请使用以下命令:

SELECT *
FROM INFORMATION_SCHEMA.COLUMNS C
WHERE C.COLUMN_NAME = @SomeColumnName;
于 2012-08-04T19:07:07.027 回答