首页 > 解决方案 > 如何在 PL/SQL 中查询非标量 JSON 值

问题描述

我有以下 JSON 输入:

[{a:1}, {a:2}]

我想要以下表格输出(单个 varchar2 列/两行):

{a:1}
{a:2}

我试过了:

select * from json_table(
   '[{a:1}, {a:2}]',
   '$[*]'
   error on error
   columns xxx varchar2 path '$'
);

我得到:

ORA-40456: JSON_VALUE evaluated to non-scalar value

如何在 PL/SQL 中完整地查询那些非标量 JSON 值,例如“{a:1}”?我知道 JSON_QUERY 是 JSON_VALUE 的非标量对应物,但我没有明确使用 JSON_VALUE,所以我不知道在这个查询中我会在哪里插入 JSON_QUERY。

(在现实生活中,初始数组中的那些 JSON 值将是复杂的结构,所以我不想一直解析它们到它们的标量组件,然后再将它们拼凑在一起)。

我使用 Oracle 18.1

标签: jsonoraclescalar

解决方案


我认为如果您使用json_query列定义,它应该可以正常工作。

select * from json_table(
   '[{a:1}, {a:2}]',
   '$[*]'
   error on error
   columns xxx varchar2 FORMAT JSON path '$'
);

推荐阅读