首页 > 解决方案 > 如何使用 JSON_VALUE 查询 JSON

问题描述

JSON输入:

[
  {
    "InputType":"Date",
    "InputName":"Main_Expiry_Date",
    "InputValue":"30 June 2020"
  },
  {
    "InputType":"Select",
    "InputName":"Internet_Service_Providers",
    "InputValue":"NTC"
  },
  {
    "InputType":"Select",
    "InputName":"Link_Desc",
    "InputValue":"Primary"
  },
  {
    "InputType":"TextBox",
    "InputName":"Remarks",
    "InputValue":""
  }
]

标签: sql-server

解决方案


如果你真的想用 解析这个 JSON 数组JSON_VALUE(),你应该使用下面的语句:

JSON:

DECLARE @json nvarchar(max) = 
N'[
  {"InputType":"Date", "InputName":"Main_Expiry_Date", "InputValue":"30 June 2020"},
  {"InputType":"Select", "InputName":"Internet_Service_Providers", "InputValue":"NTC"},
  {"InputType":"Select", "InputName":"Link_Desc", "InputValue":"Primary"},
  {"InputType":"TextBox", "InputName":"Remarks", "InputValue":""}
]'

陈述:

SELECT 
   JSON_VALUE([value], '$.InputType') AS InputType,
   JSON_VALUE([value], '$.InputName') AS InputName,
   JSON_VALUE([value], '$.InputValue') AS InputValue
FROM OPENJSON(@json)

结果:

InputType   InputName                   InputValue
Date        Main_Expiry_Date            30 June 2020
Select      Internet_Service_Providers  NTC
Select      Link_Desc                   Primary
TextBox     Remarks 

请注意,您可以使用OPENJSON()显式模式解析输入 JSON,而不使用JSON_VALUE()

SELECT InputType, InputName, InputValue
FROM OPENJSON(@json) WITH (
   InputType varchar(50) '$.InputType', 
   InputName varchar(50) '$.InputName', 
   InputValue varchar(50) '$.InputValue'
)

推荐阅读