У меня есть столбец CLOB со следующими данными (упрощенным для целей данного вопроса)Как выбрать определенный элемент из массива JSON в оракулы JSON типа CLOB
{
"notUsed": [],
"stock": [
{
"name": "eggs",
"value": "in stock"
},
{
"name": "milk",
"value": "out of stock"
}
]
}
Я хочу, чтобы избежать необходимости, чтобы выбрать весь объект и проанализировать программно, чтобы получить нужные данные. В идеале я хотел бы использовать функции Oracle JSON path для этого.
Я хочу получить "value"
, где "name" = "eggs"
Я попытался следующие, но получить [99999][40442] ORA-40442: JSON path expression syntax error
. Я запустить приведенный выше пример JSON, и путь JSON через evaluator и возвращает желаемый результат, который заставляет меня думать, что Oracle имеет собственный JSONPath intepretation
SELECT
json_query(
'{"notUsed":[],"stock":[{"name":"eggs","value":"in stock"}, {"name":"milk","value":"out of stock"}]}',
'$.stock[?(@.name=="eggs")]')
FROM dual;
Я также попытался с помощью Dot Notation, но не смог найти пример, который охватывает добавление предложения where в свойства массива.
select
myTable.id,
myTable.JSON_COLUMN.stock -- how to get array element here?
from MY_TABLE myTable
where j.id = 46
Версия:
SELECT * FROM V$VERSION
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
PL/SQL Release 12.1.0.2.0 - Production
"CORE 12.1.0.2.0 Production"