什么是nvarchar?
SQL Server中的char、nchar、varchar和nvarchar有什么区别?
发布于 2008-10-06 23:02:34
只是为了澄清..。或者总结..。
nchar和nvarchar可以存储Unicode,characters.char和varchar不能存储Unicode,characters.char和nchar是fixed-length,即使您没有用完所有space.varcharE236也会为您指定的字符数保留存储空间nvarchar和code>都是variable-length,它们只会占用您存储的字符的空间。It nchar.不会像或 reserve那样保留存储
nchar和nvarchar将占用两倍的存储空间,所以只有在需要Unicode支持时才使用它们可能是明智的。
发布于 2011-11-24 07:37:49
到目前为止,所有的答案都表明varchar是单字节的,nvarchar是双字节的。这实际上是depends on collation的第一部分,如下所示。
DECLARE @T TABLE
(
C1 VARCHAR(20) COLLATE Chinese_Traditional_Stroke_Order_100_CS_AS_KS_WS,
C2 NVARCHAR(20)COLLATE Chinese_Traditional_Stroke_Order_100_CS_AS_KS_WS
)
INSERT INTO @T
VALUES (N'中华人民共和国',N'中华人民共和国'),
(N'abc',N'abc');
SELECT C1,
C2,
LEN(C1) AS [LEN(C1)],
DATALENGTH(C1) AS [DATALENGTH(C1)],
LEN(C2) AS [LEN(C2)],
DATALENGTH(C2) AS [DATALENGTH(C2)]
FROM @T 返回

请注意,华和国字符在VARCHAR版本中仍然不存在,并被?替代。
实际上,在该排序规则中,仍然没有单个字节可以表示的中文字符。唯一的单字节字符是典型的西部ASCII集。
因此,可以从nvarchar(X)列插入到varchar(X)列to fail with a truncation error (其中X表示在两个实例中相同的数字)。
SQL Server2012添加了支持UTF-16的SC (补充字符)排序规则。在这些排序规则中,单个nvarchar字符可能需要2或4个字节。
发布于 2008-10-06 22:51:41
nchar和char的操作方式几乎完全相同,nvarchar和varchar也是如此。它们之间的唯一区别是nchar/nvarchar存储Unicode字符(如果需要使用扩展字符集,则是必需的),而varchar不存储。
因为Unicode字符需要更多的存储空间,所以nchar/nvarchar字段会占用两倍的空间(例如,在早期版本的SQL Server中,nvarchar字段的最大大小是4000)。
这个问题是this one的副本。
https://stackoverflow.com/questions/176514
复制相似问题