我有这个JSON:
[{
"id": 1,
"meta": [{
"key": "key1",
"value": "ValueKey1"
}, {
"key": "key2",
"value": "ValueKey2"
}
]
},
{
"id": 2,
"meta": [{
"key": "key2",
"value": "ValueKey2"
}
]
},
{
"id": 3,
"meta": [{
"key": "key1",
"value": "ValueKey1"
}
]
}]
我想要得到key1的所有ID的结果,那些没有key1返回值的结果应该为空.
我得到了没有ID的结果,没有键1或所有键的所有组合.
结果应该如下所示:
Id MetaValue
---------------
1 ValueKey1
2 NULL
3 ValueKey1
到目前为止,我try 了这个带和不带WHERE子句的方法:
select Id, MetaValue
from openjson('[{"id":1,"meta":[{"key":"key1","value":"ValueKey1"},{"key":"key2","value":"ValueKey2"}]},{"id":2,"meta":[{"key":"key2","value":"ValueKey2"}]},{"id":3,"meta":[{"key":"key1","value":"ValueKey1"}]}]', '$')
with(
id int '$.id',
jMeta nvarchar(max) '$.meta' as JSON
)
outer apply openjson(jMeta)
with(
cKey varchar(100) '$.key',
MetaValue varchar(100) '$.value'
)
where isnull(cKey,'') in ('','Key1')
其结果是:
Id MetaValue
-------------
1 ValueKey1
3 ValueKey1
和
Id MetaValue
-------------
1 ValueKey1
1 ValueKey2
2 ValueKey2
3 ValueKey1