COLUMNS (Transact-SQL)

为当前数据库中当前用户可访问的每一列返回一行。

若要从这些视图中检索信息,请指定 INFORMATION_SCHEMA.view_name 的完全限定名称。

列名

数据类型

说明

TABLE_CATALOG

nvarchar(128)

表限定符。

TABLE_SCHEMA

nvarchar(128)

包含该表的架构的名称。

重要说明重要提示
请勿使用 INFORMATION_SCHEMA 视图来确定对象的架构。查找对象架构的唯一可靠的方式是查询 sys.objects 目录视图。

TABLE_NAME

nvarchar(128)

表名。

COLUMN_NAME

nvarchar(128)

列名。

ORDINAL_POSITION

int

列标识号。

COLUMN_DEFAULT

nvarchar(4000)

列的默认值。

SQL Server 2008 对目录元数据中的 SQL 表达式进行解码和存储的方式不同于 SQL Server 2000。解码后的表达式的语义等同于原始文本,但是没有语法保证。例如,解码后的表达式中删除了空格。有关详细信息,请参阅 SQL Server 2008 R2 中数据库引擎功能的行为更改

IS_NULLABLE

varchar(3)

列的为空性。如果列允许 NULL,则该列将返回 YES。否则,返回 NO。

DATA_TYPE

nvarchar(128)

系统提供的数据类型。

CHARACTER_MAXIMUM_LENGTH

int

二进制数据、字符数据或文本和图像数据的最大长度(字符)。

对于 xml 和大值类型数据,为 -1。否则,返回 NULL。有关详细信息,请参阅数据类型 (Transact-SQL)

CHARACTER_OCTET_LENGTH

int

二进制数据、字符数据或文本和图像数据的最大长度(字节)。

对于 xml 和大值类型数据,为 -1。否则,返回 NULL。

NUMERIC_PRECISION

tinyint

近似数字数据、精确数字数据、整数数据或货币数据的精度。否则,返回 NULL。

NUMERIC_PRECISION_RADIX

smallint

近似数字数据、精确数字数据、整数数据或货币数据的精度基数。否则,返回 NULL。

NUMERIC_SCALE

int

近似数字数据、精确数字数据、整数数据或货币数据的小数位数。否则,返回 NULL。

DATETIME_PRECISION

smallint

datetime 和 ISO interval 数据类型的子类型代码。对于其他数据类型,返回 NULL。

CHARACTER_SET_CATALOG

nvarchar(128)

返回 master。如果该列为字符数据或 text 数据类型,则指示字符集所在的数据库。否则,返回 NULL。

CHARACTER_SET_SCHEMA

nvarchar(128)

始终返回 NULL。

CHARACTER_SET_NAME

nvarchar(128)

如果此列是字符数据或 text 数据类型,则返回字符集的唯一名称。否则,返回 NULL。

COLLATION_CATALOG

nvarchar(128)

始终返回 NULL。

COLLATION_SCHEMA

nvarchar(128)

始终返回 NULL。

COLLATION_NAME

nvarchar(128)

如果列是字符数据或 text 数据类型,则为排序规则返回唯一的名称。否则,返回 NULL。

DOMAIN_CATALOG

nvarchar(128)

如果此列是别名数据类型,则此列是在其中创建用户定义数据类型的数据库的名称。否则,返回 NULL。

DOMAIN_SCHEMA

nvarchar(128)

如果列是用户定义数据类型,则此列将返回该用户定义数据类型的架构名称。否则,返回 NULL。

重要说明重要提示
请勿使用 INFORMATION_SCHEMA 视图来确定数据类型的架构。查找类型的架构的唯一可靠方式是使用 TYPEPROPERTY 函数。

DOMAIN_NAME

nvarchar(128)

如果列是用户定义数据类型,则此列是该用户定义数据类型的名称。否则,返回 NULL。

注释

INFORMATION_SCHEMA.COLUMNS 视图的 ORDINAL_POSITION 列与 COLUMNS_UPDATED 函数所返回列的位模式不兼容。若要获取与 COLUMNS_UPDATED 兼容的位模式,在查询 INFORMATION_SCHEMA.COLUMNS 视图时必须引用 COLUMNPROPERTY 系统函数的 ColumnID 属性。例如:

USE AdventureWorks2008R2;
GO
SELECT TABLE_NAME, COLUMN_NAME, COLUMNPROPERTY(OBJECT_ID(TABLE_SCHEMA + '.' + TABLE_NAME), COLUMN_NAME, 'ColumnID') AS COLUMN_ID
FROM AdventureWorks2008R2.INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'Person';
GO