在变量中检索和使用“FOR JSON”查询的输出

Alb*_*lva 4 sql-server json

我知道输出格式为 JSON 的查询的选项,如来自MSDN页面的以下示例:

SELECT name, surname  
FROM emp  
FOR JSON AUTO 
Run Code Online (Sandbox Code Playgroud)

有很多关于如何使用应用程序生成的 json 的示例,但我的问题是,如何将生成的 json 存储在 varchar 变量中,比如说存储在另一个表中?

Alb*_*lva 9

DECLARE @Json nvarchar(MAX) = (
    SELECT name, surname  
    FROM emp  
    FOR JSON AUTO
);
Run Code Online (Sandbox Code Playgroud)

Dan Guzman 在 MSDN 论坛中回复了这个简洁的解决方案,这也对应于 @FDavidov 在他最后的评论中的建议


FDa*_*dov 1

JSON 实际上是一个字符串。使该字符串成为 JSON 的因素是以下两点的结合:

  1. 您将其称为 JSON(在您的环境中使用正确的函数),
  2. 它在正确的位置包含正确的分隔符,以符合 JSON 的规则。

因此,如果您想将 JSON 存储在变量中,只需将源字符串分配给该变量,并且每当您想对变量进行操作时,只需记住它是一个 JSON。

  • 另一件事:从[此处](https://msdn.microsoft.com/en-us/library/dn921882.aspx)您可以了解到,在 select 中使用“FOR JSON”将返回 JSON 格式的结果。尝试将变量设置为“SET x = SELECT * FROM <your-JSON> FOR JSON”。(但不确定结果是什么)。 (2认同)