只是nvarchar支持多字节字符吗?如果是这样的话,除了存储问题之外,使用varchars真的有什么意义吗?


当前回答

Jeffrey L Whitledge推荐使用nvarchar,评分约47000

Solomon Rutzky的声誉评分约为33200,建议:不要总是使用NVARCHAR。这是一种非常危险且代价高昂的态度/方法。

varchar和nvarchar SQL Server数据类型之间的主要性能差异是什么?

https://www.sqlservercentral.com/articles/disk-is-cheap-orly-4

两人都享有如此高的声誉,学习型sql server数据库开发人员会选择什么?

如果您的选择不一致,在回答和评论中会有很多关于性能问题的警告。

有关于性能的评论pro/con nvarchar。

有关于性能的评论pro/con varchar。

我对具有数百列的表有一个特殊的要求,这本身可能是不寻常的?

我选择varchar是为了避免接近SQL*服务器2012的8060字节表记录大小限制。

对我来说,nvarchar的使用超过了8060字节的限制。

我还认为应该将相关代码表的数据类型与主中心表的数据匹配。

我曾在南澳大利亚州政府的这个工作场所看到过有经验的数据库开发人员使用varchar列,其中表行数将达到数百万或更多(在这些非常大的表中,如果有nvarchar列的话),因此可能预期的数据行量成为了这一决定的一部分。

其他回答

你说得对。nvarchar存储Unicode数据,而varchar存储单字节字符数据。除了您已经提到的存储差异(nvarchar需要两倍于varchar的存储空间)之外,更喜欢nvarchar而不是varchar的主要原因是国际化(即以其他语言存储字符串)。

Varchar(n)和nvarchar(n)之间的主要区别是:

Varchar(可变长度,非Unicode字符数据)大小最大为8000。

它是可变长度数据类型用于存储非Unicode字符每个字符占用1字节的空间

Nvarchar:可变长度Unicode字符数据。

它是可变长度数据类型用于存储Unicode字符。数据以Unicode编码存储。每一个支持语言。(例如阿拉伯语、德语、印地语等)

我总是使用nvarchar,因为它允许我正在构建的任何东西都能承受我扔给它的几乎所有数据。我的CMS系统使用中文是偶然的,因为我使用了nvarchar。现在,任何新的应用程序都不应该真正关注所需的空间量。

varchar仅用于非Unicode字符,而nvarchar用于Unicode和非Unicode字符。下面给出了它们之间的一些其他差异。

VARCHAR与NVARCHAR

VARCHAR NVARCHAR
Character Data Type Variable-length, non-Unicode characters Variable-length, both Unicode and non-Unicode characters such as Japanese, Korean, and Chinese.
Maximum Length Up to 8,000 characters Up to 4,000 characters
Character Size Takes up 1 byte per character Takes up 2 bytes per Unicode/Non-Unicode character
Storage Size Actual Length (in bytes) 2 times Actual Length (in bytes)
Usage Used when data length is variable or variable length columns and if actual data is always way less than capacity Due to storage only, used only if you need Unicode support such as the Japanese Kanji or Korean Hangul characters.

Jeffrey L Whitledge推荐使用nvarchar,评分约47000

Solomon Rutzky的声誉评分约为33200,建议:不要总是使用NVARCHAR。这是一种非常危险且代价高昂的态度/方法。

varchar和nvarchar SQL Server数据类型之间的主要性能差异是什么?

https://www.sqlservercentral.com/articles/disk-is-cheap-orly-4

两人都享有如此高的声誉,学习型sql server数据库开发人员会选择什么?

如果您的选择不一致,在回答和评论中会有很多关于性能问题的警告。

有关于性能的评论pro/con nvarchar。

有关于性能的评论pro/con varchar。

我对具有数百列的表有一个特殊的要求,这本身可能是不寻常的?

我选择varchar是为了避免接近SQL*服务器2012的8060字节表记录大小限制。

对我来说,nvarchar的使用超过了8060字节的限制。

我还认为应该将相关代码表的数据类型与主中心表的数据匹配。

我曾在南澳大利亚州政府的这个工作场所看到过有经验的数据库开发人员使用varchar列,其中表行数将达到数百万或更多(在这些非常大的表中,如果有nvarchar列的话),因此可能预期的数据行量成为了这一决定的一部分。