使用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)'
答案 0 :(得分:1)
您可以在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