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转换为列和行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
织梦狗教程
本文标题为:如何使用Oracle表函数将JSON转换为列和行
基础教程推荐
猜你喜欢
- oracle区分大小写的原因? 2021-01-01
- 在多列上分布任意行 2021-01-01
- MySQL 中的类型:BigInt(20) 与 Int(20) 2021-01-01
- mysql选择动态行值作为列名,另一列作为值 2021-01-01
- 如何根据该 XML 中的值更新 SQL 中的 XML 2021-01-01
- 表 './mysql/proc' 被标记为崩溃,应该修复 2022-01-01
- 在 MySQL 中:如何将表名作为存储过程和/或函数参数传递? 2021-01-01
- 如何在 SQL 中将 Float 转换为 Varchar 2021-01-01
- 什么是 orradiag_<user>文件夹? 2022-01-01
- 二进制文件到 SQL 数据库 Apache Camel 2021-01-01
