如何在SQL Server中编写查询以查找数据库中具有列名称的所有表名,例如phone_number
?我想在数据库中显示表名和所有电话号码。
答案 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'