SQL 查询 Json 内的对象 Json
SQL Query for Json object inside Json
我有下面的 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
您可以使用 JSON_QUERY
嵌套在包含 WITH
子句的 OPENJSON
函数中,以便动态访问 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"
}
] } ] }
我有下面的 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
您可以使用 JSON_QUERY
嵌套在包含 WITH
子句的 OPENJSON
函数中,以便动态访问 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"
}
] } ] }