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



如何在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'

相关内容

  • 没有找到相关文章

最新更新