select datalength(N','), unicode(N',')
在第一列中返回 2
,在第二列中返回 44
。这意味着逗号占用两个字节,但可以仅使用数字 44 来存储。 ,
位于 unicode 的前 128 个字符中(44 小于 128),因此它应该只占用一个字节,就像 0x2C (44 的编码)确实如此。为什么T-SQL报告占用两个字节?
因为它确实占用了2个字节。作为
nvarchar
,字符 ,
存储为 0x2C00
,而不是 0x2C
,并且 0x2C00
是一个 2 字节值。 nvarchar
将所有字符存储为 USC-2 或 UTF-16(取决于您是否使用增补字符排序规则),可以是 2 字节对(有些需要更多,特别是如果您不在增补字符中)整理)。
如果您希望使用 1 个字节存储它,则可能需要使用 UTF-8 排序规则和
varchar
,然后需要更多字节的字符将使用更多字节(而不是丢失)。