首页 > 解决方案 > SQL Server json 被截断(即使使用 NVARCHAR(max) )

问题描述

DECLARE @result NVARCHAR(max);

SET @result = (SELECT * FROM table
               FOR JSON AUTO, ROOT('Data'))

SELECT @result;

这将返回一个约 43000 个字符的 json 字符串,其中一些结果被截断。

SET @result = (SELECT * FROM table
               FOR JSON AUTO, ROOT('Data'))

这将返回一个约 2000 个字符的 json 字符串。有什么办法可以防止截断吗?即使在处理一些大数据并且字符串是数百万个字符时?

标签: sqljsonsql-server

解决方案


我没有找到“官方”答案,但似乎这是新的“FOR JSON”语句的错误,它将结果拆分为 2033 行字符长。正如这里所推荐的,到目前为止,最好的选择是遍历连接返回行的结果:

string result = "";
while (reader.Read())
{
    result += Convert.ToString(reader[0]);                        
}

顺便说一句,似乎最新版本的 SSMS 已经在应用这种解决方法来在一行中显示结果。


推荐阅读