我向数据库中添加了一个表,其中包含以下列名称和数据类型
"ID" bigInt, "描述" nchar(11)
如果我检查表的设计视图,列的数据类型与我设置的相同。
如果我编写一个查询,该查询将从 SYS.COLUMNS 获取该表中的列,则列属性是不同的,例如(描述的 max_length 是 22,而不是 11)
有人可以解释为什么会这样吗?
如果相关,我正在使用 Microsoft SQL Server Enterprise Edition(64 位)。
我向数据库中添加了一个表,其中包含以下列名称和数据类型
"ID" bigInt, "描述" nchar(11)
如果我检查表的设计视图,列的数据类型与我设置的相同。
如果我编写一个查询,该查询将从 SYS.COLUMNS 获取该表中的列,则列属性是不同的,例如(描述的 max_length 是 22,而不是 11)
有人可以解释为什么会这样吗?
如果相关,我正在使用 Microsoft SQL Server Enterprise Edition(64 位)。
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'