Varchar(max)和nvarchar(max)的区别

10

在构建我的应用程序的模式时,我遇到了一个问题。

什么时候使用 varchar(max)nvarchar(max)。我的意思是应该使用它的确切用例。我已经在网上搜索过了,但是我没有找到确切的答案。

有人能建议一些确切的用例吗?


例如,如果我给出varchar(max),而我的最大数据将为1000个字符,不会超过那个范围(在哪里我应该给出varchar(1000))。如果我使用varchar(max)而不是1000个字符,是否会有内存或性能降级? - selva
4个回答

22

此为Microsoft SQL Server

NVARCHARUnicode - 每个字符占用2个字节,因此最多可容纳10亿个字符;支持东亚、阿拉伯、希伯来、西里尔等字符。

VARCHAR非Unicode - 每个字符占用1个字节,最大容量为20亿个字符,但仅限于SQL Server使用的字符集 - 无法支持前面提到的那些语言。


除非指定了数据库管理系统,否则不能说每个字符2字节!实现是未定义的... - jarlh
@jarlh:这不是实现定义为VARCHAR(MAX),因为它是SQL Server语法,在标准SQL中有一个名为CLOBCHARACTER LARGE OBJECT - dnoeth
抱歉,我没有意识到这是特定于SQL Server的问题,以为其他产品也有类似功能。(为什么这个问题没有SQL Server标签...) - jarlh

2

Varchar(max)

Varchar字段的大小可以达到数据库的限制,不同数据库的限制也不同:Oracle 9i数据库的限制为4000字节,MySQL数据库的限制为65535字节(对于整个行),而Microsoft SQL Server 2005的限制为8000个字符(除非使用varchar(max),其最大存储容量为...)

nvarchar(max)

abcdefg n定义了字符串长度,可以是1到4000的值。max表示最大存储大小为2^31-1字节(2 GB)。存储大小以字节为单位,是输入数据的实际长度的两倍加2个字节。nvarchar的ISO同义词为national char varying和national character varying。


0

如果你需要存储Unicode字符,应该使用nvarchar。如果只需要存储非Unicode字符,则可以使用varchar。


0
nvarchar 用于 Unicode 数据,而 varchar 仅使用高达 8 位代码页。 应用场景: 一般情况下,当您处理拉丁字母时,varchar 是一个不错的选择。比如说你有一个博客,写博客的语言是英语,那么使用 varchar 就是一个好选项。 当您构建多语言应用程序时,例如使用汉语、阿拉伯语等字符,nvarchar 就是个不错的选择。
希望这能对您有所帮助。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接