Когда я запрашиваю JSON_TABLE
для значения, используя выражение JSON_VALUE
(а не COLUMN
в выражении таблицы), например:
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 '$')
);
Я получаю сообщение об ошибке: используется недопустимое выражение XPATH (ORA-31013: недопустимое выражение XPATH). Одно сообщение сбивает меня с толку, но если я изменю выбор на JSON_VALUE(TO_CHAR(SUB), '$.b')
, запрос работает, показывая две строки foo и bar , что смущает меня еще больше.
У меня нет таких проблем при использовании XML-эквивалента в Oracle, где такие селекты просто работают. Я не использую столбцы, так как это позволяет мне повторно использовать многие вещи, которые у меня уже есть для XML, и, кроме того, мне интересно, что здесь не так. Я использую Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 .