【发布时间】:2016-09-02 02:15:17
【问题描述】:
我有一个包含以下数据的 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。我已经通过evaluator 运行了上面的示例 JSON 和 JSON 路径,它返回了所需的结果,这让我认为 Oracle 有它自己的 JSONPath 解释
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"
【问题讨论】:
标签: json oracle oracle12c jsonpath