完全自动化该过程
如何在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'