Oracle JSON Query с дефисом - PullRequest
       32

Oracle JSON Query с дефисом

1 голос
/ 26 сентября 2019

У меня есть база данных Oracle в версии 12.1.0.2.0 и поле JSON, которое я хочу запросить.

Этот запрос работает:

select JSON_VALUE('{"-": "hello", "de":"hallo"}','$."de"') from DUAL

Этот запрос возвращает ошибку ORA-40442 .

select JSON_VALUE('{"-": "hello", "de":"hallo"}','$."-"') from DUAL

Запросы к дефису не являются проблемой для MySQL и MSSQL.

Я не могу изменить JSON-строку.

Как мне по-прежнему запрашивать дефис?

Ответы [ 2 ]

0 голосов
/ 26 сентября 2019

Оба

select JSON_VALUE('{"-": "hello", "de":"hallo"}','$."de"') from DUAL

и

select JSON_VALUE('{"-": "hello", "de":"hallo"}','$."-"') from DUAL

произведения

, кроме случаев, когда JSON-path-expression содержит не алфавитно-цифровые символы без кавычек, такие как:

select JSON_VALUE('{"-": "hello", "de":"hallo"}','$.-') from DUAL

или

select JSON_VALUE('{"-": "hello", "de":"hallo"}','$.d-e') from DUAL

не работает и возвращает ошибку ORA-40442

Но

select JSON_VALUE('{"-": "hello", "de":"hallo"}','$.de') from DUAL

работает без проблем, даже без кавычек.

Демо

0 голосов
/ 26 сентября 2019

Решение заключается в использовании Unicode-представления:

select JSON_VALUE('{"-": "hello", "de":"hallo"}','$."\u002d"') from DUAL
...