У меня есть таблица «EvMetadata» со столбцом «Метаданные», в которой есть проверочное ограничение «IS JSON». Обратите внимание, что таблица и ее столбцы изначально созданы с использованием ДВОЙНЫХ КАТЫЧОК.
Следующий SQL работает там, где я не указываю какую-либо работу JSON, которую должен выполнять Oracle.
select
m."Metadata"
from "EvMetadata" m
Как вы можете видеть ниже, столбец метаданных просто отображает свое содержимое, которое является данными JSON.
Однако я получаю сообщение об ошибке, если я должен выполнить запрос json следующим образом.
select
m."Metadata"."FileName"
from "EvMetadata" m
Я только что добавил «Имя файла», используя запись через точку. Как вы можете видеть выше, «FileName» является допустимым полем json. Так почему ошибка?
Ошибка
ORA-00904: "M"."Метаданные"."FileName": неверный идентификатор 00904. 00000 - "%s: неверный идентификатор" *Причина: *Действие: Ошибка в строке: 2 Столбец: 3
Может ли это быть ошибкой с поддержкой запросов Oracle JSON с использованием точечной нотации в конкретном сценарии, когда объекты базы данных объявляются с двойными кавычками? Причина, по которой я подозреваю, что это может быть правдой, заключается в том, что следующий эквивалентный запрос, не использующий запись через точку, работает.
select
JSON_VALUE(m."Metadata", '$.FileName')
from "EvMetadata" m
select m.Metadata.FileName from "EvMetadata" m
Я видел только точечную запись без кавычек вокруг полей, и я полагаю, что смешанный регистр, требующий кавычек, усложняет выполнение. - person leroyJr   schedule 26.09.2015