SQL server中的nvarchar最大的长度是4000个字吗

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL server中的nvarchar最大的长度是4000个字吗相关的知识,希望对你有一定的参考价值。

1、在SQL2000版本中,最大长度是4000。

2、在SQL2005及以上版本中,最大长度是2G,本人实测,SQL2008中,将测试数据库中一个字段定义为nvarchar(max),然后使用以下SQL语句。

 UPDATE A13 SET [科室] = [科室]+[科室]  --科室字段定义为nvarchar(max)
  SELECT LEN([科室]) FROM A13
  
  --运行结果
  -- 长度
  -- 83886080

连继N次重复运行后科室字段的长度已达吓人的84M,到底多大,有兴趣可以自个试试,不过,越大执行速度会越慢哦。

3、注意,在某些情况下,前台应用对过长的字串是无法正确处理的,比如一些表格控制,比如C++定义的字符串变量。

参考技术A varchar ( max)

注解如下:

varchar [ ( n | max) ]

可变长度,非 Unicode 字符数据。n 的取值范围为 1 至 8,000。max 指示最大存储大小是 2^31-1 个字节.

在 Microsoft SQL Server 的未来版本中将删除 ntext、text 和 image 数据类型。请避免在新开发工作中使用这些数据类型,并考虑修改当前使用这些数据类型的应用程序。
参考技术B 在sql2000版本中,最大长度是4000在sql2005及以上版本中,最大长度是max,也就是nvarchar(max),长度达2g,远比4000大很多很多

SQL Server Nvarchar(最大值)

【中文标题】SQL Server Nvarchar(最大值)【英文标题】:SQL Server Nvarchar(max) 【发布时间】:2013-01-31 19:08:12 【问题描述】:

我有一个插入语句,其中一列的列类型为 nvarchar(max) desc。我注意到,当我查看数据库中的某些记录时,desc 列有时是空白的。由于通过我的 GUI 进行了验证,我知道这是不可能的。经过进一步测试,我发现如果该列的文本太大,它就不会插入该数据。我发现这种奇怪的 b/c 我认为它会给我一些错误或不完全插入记录,但它只是将该列留空。 nvarchar(max) 是否有限制,如果有的话,我可以使用其他数据类型来代替它。我做了一个测试,我尝试插入的字符超过 20,000 个,但最终用户输入会有所不同。

'************ **编辑******** *************** *****

感谢大家的快速回复,通过研究我发现你们是正确的,它会保存(保存)这么多信息。我发现,当使用 Microsoft Management Studio 时,如果当您的结果返回时,如果您查询的列的大小有很多字符,它就会显示为空白。为了验证这一点,我使用了 len(COLUMN_NAME) 函数并看到字符长度符合我的预期。有谁知道我可以更改 Microsoft Management Studio 中的设置以实际看到结果的方法吗?

【问题讨论】:

如果您可以展示如何从代码中插入数据以及数据的实际外观,将会有所帮助。 “空白”是什么意思:NULL,一个空字符串或其他什么?其他人提到了NVARCHAR(MAX) 的限制(请参阅documentation),但您的问题中没有足够的信息来准确理解您所看到的内容。 【参考方案1】:

NVARCHAR(MAX) 有一个限制 - 它是 2^31-1 字节 (2GB)。你可以阅读更多关于它的信息at Books Online。

【讨论】:

【参考方案2】:

检查下面的链接可能会有很大帮助。

默认大小为 4000,最大大小为 2GB:

http://social.msdn.microsoft.com/Forums/en-US/databasedesign/thread/d5e0c6e5-8e44-4ad5-9591-20dc0ac7a870/

What is the maximum number of characters that nvarchar(MAX) will hold?

【讨论】:

【参考方案3】:

请参考这个link

引用:

说真的 - VARCHAR(MAX) 最多可以存储 2 GB 的数据 - 而不仅仅是 8000 个字符.....

重点是:如果您使用 varchar(max),则需要确保始终将所有 >strings 显式转换为 varchar(max) - 就像我在本示例中所做的那样。否则,SQL Server 将 > 回退到“常规” varchar 处理,并且确实限制为 8000 个字符....

【讨论】:

【参考方案4】:

varchar(max) 保存 20,000 个字符应该没有问题,所以我认为这可能与其他问题有关。

我不确定您的 GUI 使用的是什么技术,但该线程似乎在讨论类似的问题,即您使用的提供程序不支持 varchar(max) 并且可能需要更新。

Strange problem with nvarchar(max) fields and Classic ASP

这可能不是 SQL Server 的问题,而是您用来与 SQL Server 通信的技术。

您能否指定您用于与 SQL Server 通信的技术(ASP、ASP.NET、版本?)以及您使用的 SQL Server 版本。

【讨论】:

以上是关于SQL server中的nvarchar最大的长度是4000个字吗的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server Nvarchar(最大值)

SQL Server中varchar(n)和nvarchar(n)

sql nvarchar 对应oracle 啥类型

SQL Server char,varchar,nchar,nvarchar区别

SQL中nvarchar类型的默认长度是多少?

SQL Server中易混淆的数据类型