Имя поля Oracle JSON со специальным символом - PullRequest
0 голосов
/ 25 февраля 2019

Используя хранимую процедуру Oracle, я пытаюсь разобрать список возвращенных JSON, который работает нормально.

JSON_TABLE(lv_clob,'$[*]'

Единственная проблема, с которой я сталкиваюсь - это одно имя поля "access_No_(e.g._abc123)", котороеимеет ( в самом названии.Я предполагаю, что это проблема специального символа, потому что я получаю ошибку Oracle JSON из-за нее.

Есть ли способ прочитать этот столбец или преобразовать его во что-то еще?Мне нужно значение "YYr11".

Пример JSON:

{"first_name": "Jon",
"last_name": "Doe",
"street_address": null,
"city": testingcity,
"state": md,
"zip": 11234,
"access_No_(e.g._abc123)": "YYr11",
"allocation": null,
"title": null,
"title_label": null
}

Моя строка кода:

access_id           VARCHAR2(100)  PATH '$.access_No_(e.g._abc123)'

1 Ответ

0 голосов
/ 25 февраля 2019

Вы можете заключить имя поля в двойные кавычки в предложении columns:

access_id           VARCHAR2(100)  PATH '$."access_No_(e.g._abc123)"'

Тогда точки (и, возможно, круглые скобки) в имени поля не считаются разделителями.

Быстрое демо:

select * from
JSON_TABLE('{"first_name": "Jon",
"last_name": "Doe",
"street_address": null,
"city": "testingcity",
"state": "md",
"zip": 11234,
"access_No_(e.g._abc123)": "YYr11",
"allocation": null,
"title": null,
"title_label": null
}' format json, '$'
columns
  access_id           VARCHAR2(100)  PATH '$."access_No_(e.g._abc123)"'
);

ACCESS_ID
----------------------------------------------------------------------------------------------------
YYr11
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...