【问题标题】:Querying JSON nested array object in SQL在 SQL 中查询 JSON 嵌套数组对象
【发布时间】:2017-11-17 06:11:17
【问题描述】:

我有以下 JSON,我只需要查询 name 属性值。

DECLARE @j NVARCHAR(4000) = N'{  
   "ArrayValue":[
        {
            "name": "XXX",
            "value": 10
        },
        {
            "name": "Memory123",
            "value": 20
        }
    ]
}'

以下是我通过OPENJSON()得到的结果

SELECT value as Name
FROM OPENJSON(@j, '$.ArrayValue')

Whcih 会得到以下输出。

Name
---------------------------------------------------
{              "name": "Memory"          }
{              "name": "Memory123"          }

但是我需要以下格式的输出。

Name
-----
Memory
Memory123

有没有不使用replace的更简单的方法?

【问题讨论】:

    标签: json sql-server-2016


    【解决方案1】:

    您可以将 ArrayValue 定义为 JSON 列,然后使用 CROSS APPLY 获取名称值。这是一个例子:

    DECLARE @j NVARCHAR(4000) = N'{  
       "ArrayValue":[
            {
                "name": "XXX",
                "value": 10
            },
            {
                "name": "Memory123",
                "value": 20
            }
        ]
    }'
    SELECT b.name
    FROM OPENJSON(@j)
    WITH (ArrayValue NVARCHAR(MAX) AS JSON) AS a
    CROSS APPLY OPENJSON(a.ArrayValue)
    WITH ([name] NVARCHAR(100)) AS b
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-11-21
      • 2020-03-19
      • 1970-01-01
      • 2013-03-18
      • 1970-01-01
      • 2019-08-11
      相关资源
      最近更新 更多