当我使用表达式(而不是表中的表达式)查询JSON_TABLE值时,例如:JSON_VALUECOLUMN
WITH SAMPLE_TABLE AS (
SELECT '{"a":[{"b":"foo"},{"b":"bar"}]}' AS PAYLOAD FROM DUAL
)
SELECT JSON_VALUE(SUB, '$.b')
FROM SAMPLE_TABLE, JSON_TABLE(
PAYLOAD,
'$.a[*]'
COLUMNS (SUB CLOB FORMAT JSON PATH '$')
);
Run Code Online (Sandbox Code Playgroud)
我收到错误消息,指出我使用了无效的 XPATH 表达式(ORA-31013:无效的 XPATH 表达式)。仅该消息就让我感到困惑,但如果我将 select 更改为JSON_VALUE(TO_CHAR(SUB), '$.b'),查询将通过显示两行foo和bar来工作,这让我更加困惑。
在 Oracle 中使用 XML 等效项时,我没有遇到任何此类问题,因为此类选择可以正常工作。我没有使用列,因为这使我能够重用 XML 已有的许多内容,除此之外,我很好奇这里出了什么问题。我正在使用Oracle Database 12c 企业版版本 12.2.0.1.0。
小智 0
您可以使用 Oracle 19c 中提到的点表示法引用 json 字段吗?希望您使用的是oracle最新版本。
例子
SELECT po.po_document.Requestor FROM j_purchaseorder po;
Run Code Online (Sandbox Code Playgroud)
这里j_purchaseorder po是一个表。po_document 是 json 数据库字段 请求者是 json key
你能试试这个吗?