从JSON获取值-SQL Server

问题描述

我有以下JSON

[
  {
    "email_id": 1598819368,"email": "[email protected]"
  },{
    "email_id": 1598819369,"email": "[email protected]"
  },{
    "email_id": 1598819370,"email": "[email protected]"
  },{
    "email_id": 1598819371,"email": "[email protected]"
  }
]

如何使用sqlServer 2017返回仅电子邮件地址的列表?

-------------------
   emailaddress   
-------------------
  [email protected]
  [email protected]
  [email protected]
  [email protected]

我一直在尝试使用JSON_VALUEJSON_QUERY,但我只能得到一个电子邮件地址或NULL。

谢谢!

解决方法

这应该做

declare @json         nvarchar(max)=N'[
  {
    "email_id": 1598819368,"email": "[email protected]"
  },{
    "email_id": 1598819369,"email": "[email protected]"
  },{
    "email_id": 1598819370,"email": "[email protected]"
  },{
    "email_id": 1598819371,"email": "[email protected]"
  }
]'

select email from openjson(@json) with (email_id            bigint,email               nvarchar(200));

结果

email
[email protected]
[email protected]
[email protected]
[email protected]