0

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

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

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

4

4 回答 4

2

NVARCHAR(MAX) 有一个限制 - 它是 2^31-1 字节 (2GB)。您可以在 Books Online上阅读更多相关信息。

于 2013-01-31T19:13:19.050 回答
1

请参考此链接

引用:

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

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

于 2013-01-31T19:12:43.953 回答
1

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

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

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

nvarchar(MAX) 可以容纳的最大字符数是多少?

于 2013-01-31T19:12:10.540 回答
0

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

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

nvarchar(max) 字段和经典 ASP 的奇怪问题

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

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

于 2013-01-31T19:14:05.870 回答