5

我向数据库中添加了一个表,其中包含以下列名称和数据类型

"ID" bigInt, "描述" nchar(11)

如果我检查表的设计视图,列的数据类型与我设置的相同。

如果我编写一个查询,该查询将从 SYS.COLUMNS 获取该表中的列,则列属性是不同的,例如(描述的 max_length 是 22,而不是 11)

有人可以解释为什么会这样吗?

如果相关,我正在使用 Microsoft SQL Server Enterprise Edition(64 位)。

4

1 回答 1

15

sys.columnsmax_length中的列显示最大长度(以字节为单位)。nchar是双字节,因此 11 个字符占用 22 个字节。

如果您想要字符数,您可以使用INFORMATION_SCHEMA.COLUMNS

select COLUMN_NAME, CHARACTER_MAXIMUM_LENGTH
from INFORMATION_SCHEMA.COLUMNS
where TABLE_NAME = 'YourTable'

或者你可以使用函数COLUMNPROPERTY

select name,
       columnproperty(object_id, name, 'charmaxlen') as charmaxlen
from sys.columns
where object_name(object_id) = 'YourTable'
于 2012-12-06T12:28:57.957 回答