上一篇
场景引入:
刚接手一个老项目,数据库里一堆表名像“TB_2023_Archive”这种谜语命名?🤯 想查某个字段在哪个表里,总不能一个个点开看吧?今天教你几招MSSQL查列名的神操作,5分钟搞定“大海捞针”!
INFORMATION_SCHEMA.COLUMNS
(最标准)SELECT TABLE_NAME, COLUMN_NAME, DATA_TYPE FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME LIKE '%关键字%' -- 比如找包含"price"的列
优点:
✅ 跨数据库版本通用
✅ 还能看到数据类型(DATA_TYPE)和是否允许NULL(IS_NULLABLE)
举个栗子:
想找所有包含“user”的列?把%关键字%
换成%user%
,结果秒出!
sp_columns
(快速预览)EXEC sp_columns '表名' -- 查看特定表的所有列
适用场景:
👉 已知表名,想快速看字段清单
👉 比写SELECT更顺手(适合命令行操作)
输出彩蛋:
连字段长度(LENGTH)、小数位数(SCALE)都给你列出来!
sys.columns
+ sys.tables
(高阶玩家)SELECT t.name AS 表名, c.name AS 列名 FROM sys.columns c JOIN sys.tables t ON c.object_id = t.object_id WHERE c.name LIKE '%关键字%'
为什么用这个:
🛠️ 需要更复杂的筛选条件时(比如同时按表名+列名过滤)
🛠️ 性能比INFORMATION_SCHEMA更快(超大型数据库适用)
模糊搜索加强版:
-- 同时搜索列名和表名 SELECT TABLE_NAME, COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME LIKE '%order%' OR TABLE_NAME LIKE '%order%'
按数据类型筛选:
-- 找出所有datetime类型的列 SELECT TABLE_NAME, COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE DATA_TYPE = 'datetime'
批量导出列清单(DBA最爱):
-- 生成所有表的字段清单报告 SELECT TABLE_NAME AS '表名', STRING_AGG(COLUMN_NAME, ', ') AS '包含字段' FROM INFORMATION_SCHEMA.COLUMNS GROUP BY TABLE_NAME
⚠️ 注意大小写:MSSQL默认不区分大小写,但如果数据库设置了区分大小写排序规则,LIKE '%Price%'
和LIKE '%price%'
结果可能不同!
⚠️ 权限问题:如果查不到结果,可能是当前账号没有访问sys
或INFORMATION_SCHEMA
的权限,喊DBA给你开权限吧~
方法 | 适用场景 | 优点 |
---|---|---|
INFORMATION_SCHEMA |
标准查询,需要列详细信息 | 兼容性好 |
sp_columns |
快速查看单表结构 | 命令行友好 |
sys.columns |
复杂条件查询 | 高性能 |
下次再遇到“这个字段藏哪儿了”的问题,直接掏出这些脚本,保证同事看你眼神都带着崇拜!😎
(注:本文基于MSSQL 2022版本验证,其他版本可能略有差异)
本文由 夏侯柏 于2025-08-01发表在【云服务器提供商】,文中图片由(夏侯柏)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://up.7tqx.com/wenda/508202.html
发表评论