显示包含特定列名的表名的SQL Server查询

时间:2017-04-30 21:41:32

标签: sql sql-server

如何在SQL Server中编写查询以查找数据库中具有列名称的所有表名,例如phone_number?我想在数据库中显示表名和所有电话号码。

2 个答案:

答案 0 :(得分:0)

您可以使用该名称获取所有表格进行简单查询:

select table_name
from information_schema.columns
where column_name = 'phone_number';

您需要某种形式的动态SQL来实际获取电话号码。我的建议是使用如下语句生成SQL:

select replace(replace('select ''[table_name]'' as which, [column_name] from [table_name] union all', '[table_name]', table_name), '[column_name]', column_name)
from information_schema.columns
where column_name = 'phone_number';

然后将其复制到SMSS中,删除最终的union all并运行查询。我知道此版本假定您有合理的表名称标识符。如果确实需要,可以增强逻辑以引用标识符。

您还可以使用动态SQL或sp_MSforeachtable完全自动化该过程。

答案 1 :(得分:0)

您可以尝试使用以下代码:

SELECT sys.columns.name AS ColumnName,sys.tables.name AS TableName
FROM sys.columns JOIN sys.tables ON
sys.columns.object_id = sys.tables.object_id
WHERE sys.columns.name = 'phone_number'