如何使用Oracle表函数将JSON转换为列和行

How to convert json to columns and rows using oracle table function(如何使用Oracle表函数将JSON转换为列和行)
本文介绍了如何使用Oracle表函数将JSON转换为列和行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

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转换为列和行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Execute complex raw SQL query in EF6(在EF6中执行复杂的原始SQL查询)
Hibernate reactive No Vert.x context active in aws rds(AWS RDS中的休眠反应性非Vert.x上下文处于活动状态)
Bulk insert with mysql2 and NodeJs throws 500(使用mysql2和NodeJS的大容量插入抛出500)
Flask + PyMySQL giving error no attribute #39;settimeout#39;(FlASK+PyMySQL给出错误,没有属性#39;setTimeout#39;)
auto_increment column for a group of rows?(一组行的AUTO_INCREMENT列?)
Sort by ID DESC(按ID代码排序)