【问题标题】:get Json values and Json string from Json Array in SQL Server从 SQL Server 中的 Json 数组中获取 Json 值和 Json 字符串
【发布时间】:2021-11-15 11:34:37
【问题描述】:

我有一个这样的 JSON 字符串:

{
    "success": "true",
    "data": [
              { "ID": 1, "name": "abc" },
              { "ID": 2, "name": "def" }
            ]
}

我需要如下输出:

ID name JsonString
1 abc {"ID": 1, "name": "abc"}
2 def {"ID": 2, "name": "def"}

我需要 SQL Server 中的查询

【问题讨论】:

  • SQL Server 2008(完全不支持,并且已经支持 2 年多)和 2012 没有 [native] 支持 JSON。也许是时候完成这些升级了。 2012 年也只剩下大约 9 个月的支持,所以如果您需要在您的环境中支持 JSON,那么现在是最好的时机。
  • 它在 Sql server 2016 中
  • "它在 Sql server 2016" 那么为什么你最初标记了 SQL Server 2012 和 2008,为什么你现在也标记了 2019 ..?如果您要使用版本标签,只需将您真正使用的版本标签...新版本的产品通常会带来功能can 也可以删除它。垃圾邮件版本标签(尤其是错误的标签)并不能帮助那些您(在他们自己的时间)寻求(免费)帮助的人。
  • JSON 支持,但是,已在 SQL Server 2016 中添加。我建议阅读 documentation 并进行搜索,因为有很多答案显示使用 OPENJSON

标签: sql json sql-server sql-server-2016


【解决方案1】:

这里唯一有趣的是OPENJSON 的初始路径(因为我们只关心data)和反映原始JSON 的属性JsonString,它需要路径和覆盖。

DECLARE @json NVARCHAR(MAX) = '{"success":"true","data":[{"ID":1,"name":"abc"},{"ID":2,"name":"def"}]}';

SELECT * 
FROM OPENJSON(@json, '$.data')
WITH (ID INT, name VARCHAR(100), JsonString NVARCHAR(MAX) '$' AS JSON)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-30
    • 2021-07-13
    • 1970-01-01
    • 2015-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多