为什么逗号要占用两个字节?

问题描述 投票:0回答:1

select datalength(N','), unicode(N',')
在第一列中返回
2
,在第二列中返回
44
。这意味着逗号占用两个字节,但可以仅使用数字 44 来存储。
,
位于 unicode 的前 128 个字符中(44 小于 128),因此它应该只占用一个字节,就像 0x2C (44 的编码)确实如此。为什么T-SQL报告占用两个字节?

t-sql unicode byte nvarchar
1个回答
1
投票

因为它确实占用了2个字节。作为

nvarchar
,字符
,
存储为
0x2C00
,而不是
0x2C
,并且
0x2C00
是一个 2 字节值。
nvarchar
将所有字符存储为 USC-2 或 UTF-16(取决于您是否使用增补字符排序规则),可以是 2 字节对(有些需要更多,特别是如果您不在增补字符中)整理)。

如果您希望使用 1 个字节存储它,则可能需要使用 UTF-8 排序规则和

varchar
,然后需要更多字节的字符将使用更多字节(而不是丢失)。

© www.soinside.com 2019 - 2024. All rights reserved.