首页 > 解决方案 > 在 SQL Server 中查询根是对象数组的 Json

问题描述

我在 SQL 表中有一个列,它的 json 值如下所示:

[
  {"address":{"value":"A9"},
  "value":{"type":11,"value":"John"}}, 
  {"address":{"value":"A10"},
  "value":{"type":11,"value":"Doe"}}]

JSON_VALUE 或 JSON_QUERY 的 MSDN 示例需要根目录下的 json 对象。如何在上面查询以返回“地址”为 A9 和“值”为 John 的行?我正在使用 SQL Azure。

标签: sql-serverazure-sql-database

解决方案


像这样的东西:

declare @json nvarchar(max) = '[
  {"address":{"value":"A9"},
  "value":{"type":11,"value":"John"}}, 
  {"address":{"value":"A10"},
  "value":{"type":11,"value":"Doe"}}]'



select a.*
from openjson(@json) r
cross apply openjson(r.value)
with (   
        address  nvarchar(200)   '$.address.value',  
        name     nvarchar(200)  '$.value.value'
     ) a  
where address = N'A9'
  and name = N'John'

输出

address name
------- -----
A9      John

(1 row affected)

推荐阅读