如何在SQL Server中查询包含指定字段的所有数据表?
SQL Server查询包含指定字段的所有表方案
你可以通过查询SQL Server内置的系统视图快速定位符合要求的表,无需手动逐个排查,以下是两种常用实现方式,以查找包含household_no字段的表为例:
方法1:使用通用系统视图INFORMATION_SCHEMA.COLUMNS
该视图符合SQL标准,语法简单易读,适合大多数场景:
-- 先切换到目标数据库,也可以手动在SSMS里选择对应数据库 USE 你的数据库名称; SELECT TABLE_SCHEMA 表所属架构, TABLE_NAME 表名 FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME = 'household_no' ORDER BY TABLE_SCHEMA, TABLE_NAME;
方法2:使用SQL Server专属系统视图
关联sys.columns、sys.tables系统表,查询效率更高,适合表数量多的场景:
USE 你的数据库名称; SELECT s.name 表所属架构, t.name 表名 FROM sys.columns c JOIN sys.tables t ON c.object_id = t.object_id JOIN sys.schemas s ON t.schema_id = s.schema_id WHERE c.name = 'household_no' ORDER BY s.name, t.name;
补充说明
- 若需要模糊匹配字段,将WHERE条件中的等值判断改为
COLUMN_NAME LIKE '%你要匹配的关键词%'即可 - 若需要同时查询视图是否包含该字段,方法1的查询范围新增
TABLE_TYPE = 'VIEW'过滤即可,方法2将sys.tables替换为sys.views即可 - 字段名的匹配大小写规则和你数据库的默认排序规则一致,如有大小写敏感匹配需求,可在WHERE条件后添加
COLLATE指定对应排序规则
内容的提问来源于stack exchange,提问作者Mus
相关产品推荐
相关产品推荐

