【问题标题】:SQL SERVER: Export Query RESULT as JSON ObjectSQL SERVER:将查询结果导出为 JSON 对象
【发布时间】:2023-03-15 21:40:02
【问题描述】:

我正在使用 Azure sql server 并尝试以以下格式导出查询结果。

需要的查询结果:

{ "结果": [{...},{...}], "响应": 0 }

从这个例子:https://msdn.microsoft.com/en-us/library/dn921894.aspx

我正在使用这个 sql,但我不确定如何将另一个响应属性作为同级添加到根属性:“results”。

当前查询:

SELECT name, surname
FROM emp
FOR JSON AUTO, ROOT('results')

查询输出:

{ "结果": [ {“名称”:“约翰”,“姓”:“Doe”}, { "name": "Jane", "surname": "Doe" } ] }

【问题讨论】:

  • FOR JSON 在 SQL Azure DB 中仍然不可用。您在 VM 中使用 SQL 2016 CTP2 吗?

标签: sql-server json azure-sql-database


【解决方案1】:

使用FOR JSON PATH 而不是FOR JSON AUTO。请参阅Format Query Results as JSON with FOR JSON (SQL Server) 页面了解几个示例,包括点分隔的列名和来自 SELECTS 的查询

【讨论】:

  • 我有一个变量'@count'。和“@resp”,我需要添加到与结果相同的级别。我不确定如何在单个查询中做到这一点。并将其转换为 json。
【解决方案2】:

这种格式没有内置选项,所以也许最简单的方法是手动格式化响应,例如:

declare @resp nvarchar(20) = '20'
SELECT '{"response":"' +
         (SELECT * FROM emp FOR JSON PATH) +
         '", "response": ' + @resp + ' }' 

FOR JSON 会做更难的部分(格式化表),你只需要包装它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多