本文介紹了如何使用Oracle表函數(shù)將JSON轉(zhuǎn)換為列和行的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧!
問題描述
我有一個表結(jié)構(gòu),如下所示:
create table json_tab (id number constraint primary key,d_data clob(30000));
insert into json_tab values (1,'[{"a"=0,"b"=1},{"a"=1,"b"=2},{"a"=2,"b"=3}]');
insert into json_tab values (2,'[{"a"=0,"b"=1},{"a"=1,"b"=2},{"a"=2,"b"=3}]');
我要編寫一個查詢來提取記錄,格式如下。
id | a | b |
---|---|---|
1 | 0 | 1 |
1 | 1 | 2 |
1 | 2 | 3 |
2 | 0 | 1 |
2 | 1 | 2 |
2 | 2 | 3 |
以上是一個數(shù)據(jù)示例。實際數(shù)據(jù)用于超過30000字節(jié)的JSON列
SQL
首先,您的推薦答案代碼不正確,無論是對于CREATE TABLE還是對于JSON文檔。以下是更正后的版本:
drop table json_tab;
create table json_tab (id number primary key,d_data clob check (d_data is json));
insert into json_tab values (1,'[{"a":0,"b":1},{"a":1,"b":2},{"a":2,"b":3}]');
insert into json_tab values (2,'[{"a":0,"b":1},{"a":1,"b":2},{"a":2,"b":3}]');
select j.id, t.a, t.b
from json_tab j, json_table (j.d_data columns (
nested path '$[*]' COLUMNS(
A NUMBER PATH '$.a',
B number path '$.b'))) t;
以下是輸出:
ID A B
---------- ---------- ----------
1 0 1
1 1 2
1 2 3
2 0 1
2 1 2
2 2 3
這篇關(guān)于如何使用Oracle表函數(shù)將JSON轉(zhuǎn)換為列和行的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,