字段信息

通过系统表查询表的字段信息

我们可以通过查询系统表来获取某一张表下面的所有字段。系统表记录了整个 SQL Server 中所有库的表结构信息。

SELECT *
FROM [Demo].[dbo].[Amount]
GOCode language: CSS (css)

获取表的 Object ID

SELECT OBJECT_ID('[SportsStore].[dbo].[Products]')Code language: JavaScript (javascript)

通过 syscolumns 查询字段

SELECT * FROM syscolumns WHERE id = OBJECT_ID('Amount')Code language: JavaScript (javascript)

syscolumns 系统表存储了每个表和视图的列信息,常用字段说明:

列名说明
id所属表或视图的 object_id
name列名
colid列在表中的顺序编号
xtype列的数据类型(对应 systypes 中的类型编号)
length列的物理长度
isnullable是否允许为 NULL(1 允许,0 不允许)

更推荐的查询方式(SQL Server 2005+)

syscolumns 属于旧版兼容视图,推荐使用 sys.columns 目录视图:

SELECT c.name AS 列名,
       t.name AS 数据类型,
       c.max_length AS 最大长度,
       c.is_nullable AS 允许空
FROM sys.columns c
JOIN sys.types t ON c.user_type_id = t.user_type_id
WHERE c.object_id = OBJECT_ID('Amount')Code language: PHP (php)
-- 或者使用 INFORMATION_SCHEMA.COLUMNS(跨数据库兼容)
SELECT COLUMN_NAME, DATA_TYPE, IS_NULLABLE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'Amount'Code language: JavaScript (javascript)

总结:syscolumns / sys.columns / INFORMATION_SCHEMA.COLUMNS 都可以用来查询字段信息,其中 sys.columns 是 SQL Server 当前版本最完整、最推荐的方案。

Previous:

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注