繁体   English   中英

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

[英]SQL Server query that display tables names which contains specific column name

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

您可以通过简单的查询获取所有具有该名称的表:

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完全自动化该过程。

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

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'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM