怎么使用Oracle表函数将JSON转换为列和行

本教程将介绍如何使用Oracle表函数将JSON转换为列和行的处理方法,这篇教程是从别的地方看到的,然后加了一些国外程序员的疑问与解答,希望能对你有所帮助,好了,下面开始学习吧。

怎么使用Oracle表函数将JSON转换为列和行 教程 第1张

问题描述

我有一个表结构,如下所示:

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

以上是一个数据示例。实际数据用于超过30000字节的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

好了关于怎么使用Oracle表函数将JSON转换为列和行的教程就到这里就结束了,希望趣模板源码网找到的这篇技术文章能帮助到大家,更多技术教程可以在站内搜索。