我有如下的json資料:
[{"@code":null,"@name":"Model 3","@id":"{Model 3}"},{"@code":5010020168,"@name":"Tesla Inc." ,"@id":"[COM:/acorn=5010020168]"}]
如何使 ORACLE 查詢定義“@”符號的路徑。
我在下面嘗試過這樣但不起作用:
select
mv.id,
mv.value as title,
qjson_options.row_number,
qjson_options.code,
qjson_options.name,
qjson_options.id
from meta_value mv,
JSON_TABLE(mv.additional_info, '$.[*]'
COLUMNS (
row_number FOR ORDINALITY,
code VARCHAR2(255) PATH '$.@code',
id VARCHAR2(255) PATH '$.@id',
name VARCHAR2(255) PATH '$.@name'
)) qjson_options
謝謝
uj5u.com熱心網友回復:
您嘗試的代碼中有兩個問題。
一個是致命錯誤,甚至無法讓您接近@...名稱。具體來說,背景關系路徑$.[*]無效。你需要的是$[*]. 您的頂級結構是一個陣列,路徑必須反映這一點。$和陣列標記之間不應有句點[*]。
第二個是 - 這回答了你的問題 - 帶有前導 at 符號的名稱必須用雙引號括起來。
像這樣的東西(在 Oracle 12.2.0.1 上測驗):
select *
from json_table(
'[{"@code":null,"@name":"Model 3","@id":"{Model 3}"},
{"@code":5010020168,"@name":"Tesla Inc.",
"@id":"[COM:/acorn=5010020168]"}]'
, '$[*]' -- <<< First mistake was here
COLUMNS (
row_number FOR ORDINALITY,
code VARCHAR2(255) PATH '$."@code"',
id VARCHAR2(255) PATH '$."@id"',
name VARCHAR2(255) PATH '$."@name"'
)
)
;
ROW_NUMBER CODE ID NAME
---------- -------------- ------------------------ --------------
1 {Model 3} Model 3
2 5010020168 [COM:/acorn=5010020168] Tesla Inc.
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/455861.html
上一篇:更新sqloracle查詢
