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


当前回答

主要是nvarchar存储Unicode字符,varchar存储非Unicode字符。

“Unicodes”是指16位字符编码方案,允许来自许多其他语言(如阿拉伯语、希伯来语、汉语、日语)的字符在单个字符集中编码。

这意味着unicode使用每个字符2个字节来存储,而非unicode使用每字符一个字节来进行存储。这意味着与非unicode相比,unicode需要双倍的存储容量。

其他回答

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

如果使用单个字节存储字符,则有256种可能的组合,因此可以保存256种不同的字符。排序规则是一种模式,它定义了字符及其进行比较和排序的规则。

1252,即拉丁语1(ANSI),是最常见的。单字节字符集也不足以存储许多语言使用的所有字符。例如,一些亚洲语言有数千个字符,因此每个字符必须使用两个字节。

Unicode标准

当在网络中使用使用多个代码页的系统时,管理通信变得困难。为了实现标准化,ISO和Unicode联盟引入了Unicode。Unicode使用两个字节来存储每个字符。也就是说,可以定义65536个不同的字符,所以几乎所有的字符都可以被Unicode覆盖。如果两台计算机使用Unicode,每个符号都将以相同的方式表示,不需要转换-这就是Unicode背后的想法。

SQL Server有两类字符数据类型:

非Unicode(char、varchar和文本)Unicode(nchar、nvarchar和ntext)

如果我们需要保存来自多个国家的字符数据,请始终使用Unicode。

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

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

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

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

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

nvarchar将数据存储为Unicode,因此,如果要在数据列中存储多语言数据(多种语言),则需要N变量。

nArchar将帮助您存储Unicode字符。如果您想存储本地化的数据,这是一种方法。