【问题标题】:SQL Query for Json object inside JsonJson 中 Json 对象的 SQL 查询
【发布时间】:2020-04-14 06:15:36
【问题描述】:

我有下面的 Json 字符串。我需要编写一个查询来获取 SP 记录。在不提供 索引值,我们需要得到结果。

 {
   "S": [
    {
      "Name": "Project1",
       "SP": [
        {
          "ID": 1,
          "Name": "Test1"
        },
        {
          "ID": 2,
          "Name": "Test2"
        },
  }]}

如何查询以获得 SP 值。

Expected Result:

 ID    Name 
 1     Test1 
 2     Test2

 I tried the below but not working. Can you please suggest the correct query.

SELECT DISTINCT JSON_VALUE(JsonData, '$.S[0].SP.ID') AS ID,
                JSON_VALUE(JsonData, '$.S[0].SP.Name') AS Name
    FROM TableA

【问题讨论】:

  • 您使用的是哪个 SQL 引擎?
  • 我使用的是 SQL Server 2019

标签: sql json sql-server sql-server-2019


【解决方案1】:

您可以使用嵌套在包含WITH 子句的OPENJSON 函数中的JSON_QUERY 来动态访问SP 数组的所有成员:

SELECT ID, Name
  FROM TableA
 CROSS APPLY OPENJSON(JSON_QUERY(JsonData, '$.S[0].SP'))
             WITH (ID   nvarchar(500) '$.ID',
                   Name nvarchar(500) '$.Name')

顺便说一句,您需要将 JsonData 修复为转换为

{
   "S": [
    {
      "Name": "0219 Project Methodology - Allergies",
       "SP": [
        {
          "ID": 1,
          "Name": "Test1"
        },
        {
          "ID": 2,
          "Name": "Test2"
        }
  ] } ] }

Demo

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-11-21
  • 2020-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-05
相关资源
最近更新 更多