我在数据库中添加了一个表,其中包含以下列名和数据类型
“ID”bigInt,“Description”nchar(11)
如果我检查表的设计视图,列的数据类型就像我设置它们一样。
如果我编写的查询将从SYS.COLUMNS获取该表中的列,则列属性不同,例如(描述的max_length为22,而不是11)
有人可以解释为什么会这样吗?
如果相关,我使用的是Microsoft SQL Server企业版(64位)。
答案 0 :(得分:12)
sys.columns中的列max_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'