我有一个insert语句,其中一列我的列类型为nvarchar(max)desc。我注意到当我查看数据库中的某些记录时,desc列有时是空白的。由于我的GUI有验证,我知道这是不可能的。经过进一步测试后,我发现如果该列的文本很大,它就不会插入那些数据。我发现这种奇怪的b / c我认为它会给我一些错误或者不完整地插入记录,但它只是将该列留空。 nvarchar(max)是否有限制,如果有的话,我可以使用其他数据类型。我做了一个测试,我尝试插入的字符超过20,000,但它在最终用户输入时有所不同。
“的 * ** * ** * ** * ** * * 编辑的 * ** * ** * * * * ** * ** * ** * ** * * * * ***
感谢大家快速回复,通过研究我发现你们是正确的,它会持有(持有)那么多信息。我发现,当使用Microsoft Management Studio时,如果您的查询在您的结果返回时有多个字符的列大小,则显示为空白。为了验证这一点,我使用len(COLUMN_NAME)函数,看到字符长度是我所期望的。有谁知道我可以改变Microsoft Management Studio中的设置以实际看到结果?
答案 0 :(得分:2)
NVARCHAR(MAX)有一个限制 - 它是2 ^ 31-1字节(2GB)。您可以阅读更多相关信息at Books Online。
答案 1 :(得分:1)
查看以下可能有用的链接。
默认大小为4000,最大大小为2GB:
What is the maximum number of characters that nvarchar(MAX) will hold?
答案 2 :(得分:1)
请参阅此link
引用:
严重 - VARCHAR(MAX)最多可以存储2 GB的数据 - 而不仅仅是8000个字符......
关键是:如果你使用varchar(max),你需要确保始终将所有>字符串显式地转换为varchar(max) - 正如我在本例中所做的那样。否则,SQL Server将>退回到“常规”varchar处理,而且确实限制为8000个字符....
答案 3 :(得分:0)
varchar(max)
应该没有包含20,000个字符的问题,所以我认为这可能与其他内容有关。
我不确定您的GUI正在使用什么技术,但是这个主题似乎谈论了一个类似的问题,即您使用的提供商不支持varchar(max)
并且可能需要更新。
Strange problem with nvarchar(max) fields and Classic ASP
它可能不是SQL服务器的问题,而是您用来与SQL Server通信的技术。
您是否可以指定用于与SQL Server(ASP,ASP.NET,版本?)通信的技术以及您正在使用的SQL Server版本。