在DB表中,table1在column1中有以下JSON:
{
"key1": [
{
"subkey1":"somevalue1",
"subkey2":"somevalue2",
},
{
"subkey1":"interestedvalue1",
"subkey2":"interestedvalueToParseAndGet",
}
]
}
如果我做了下面的事,
select JSON_VALUE(column1, '$.key1[1].subkey2') from table1
我能够从查询中获得interestedvalueToParseAndGet
,这正是我所期望的。
但是我不能保证这总是数组中的第二项。
如何有条件地从数组中提取项(谁的subkey1
是interestedvalue1
)并获得其对应的subkey2
值?
3条答案
按热度按时间4xy9mtcn1#
Oracle支持在JSON路径文本中进行过滤,您可以使用它来限制数组项。
| 瓦尔|子键2|
| - -----|- -----|
| {“key1”:[ { “subkey1”:“somevalue1”, “subkey2”:“somevalue2”, }, { “subkey1”:“interestedvalue1”, “subkey2”:“interestedvalueToParseAndGet”, }]}| interestedvalueToParseAndGet|
fiddle
pkbketx92#
其中一个选项是使用CASE表达式:
ryevplcw3#
最后我使用了
JSON_TABLE
,下面的工作: