【oracle】oracle数据处理将一行数据根据条件拆分为多行

前言

有些情况下,我们需要把一行数据处理为多行,根据某个列的特性分隔符或者某种匹配条件进行数据清洗,类似这汇总情况我们可以通过oracle数据库的函数来进行处理转换,也是一种办法,下面演示如何使用sql将数据根据条件转换为多行。

一、实现效果

根据爱好字段将有多个爱好的数据自动分为多行

原始数据表:

表(PEOPLE)录入以下数据

目标效果:

二、实现方式

利用oracle的JSON_TABLE函数, JSON_TABLE是 Oracle 12c 引入的函数,用于将 JSON 数据转换为关系型表格格式,使 JSON 数据可以像普通表一样进行查询和操作。

sql 复制代码
JSON_TABLE(
    json_document,
    json_path COLUMNS (column_definition)
) AS alias

参数说明:

json_document: 要处理的 JSON 数据源

json_path: JSON 路径表达式,指定要提取的数据

COLUMNS: 定义输出列的结构和数据类型

实现sql语句:

sql 复制代码
 select a.NAME,b.value  as HOBBY from PEOPLE a, JSON_TABLE('["' || REPLACE(a.HOBBY, '、','","')||'"]','$[*]' COLUMNS(value VARCHAR2(100) PATH '$'))b; 

解释:

实际上上述sql是把要处理的字符串转换为了json再使用JSON_TABLE进行查询,其中[∗]代表遍历JSON数组中的所有元素,[*]代表遍历 JSON 数组中的所有元素,[∗]代表遍历JSON数组中的所有元素,代表当前处理的 JSON 元素本身,通过JSON_TABLE转换后,将会把json数组中的每一个数据转换为行,也就实现了根据列条件分割转换为行的需求

解最终sql执行结果:

为了帮助更多像你一样的读者,我将持续在专栏中分享技术干货和实用技巧。如果你觉得这篇文章对你有帮助,可以考虑关注我的专栏,谢谢。

相关推荐
科技小花25 分钟前
数据治理平台架构演进观察:AI原生设计如何重构企业数据管理范式
数据库·重构·架构·数据治理·ai-native·ai原生
一江寒逸27 分钟前
零基础从入门到精通MySQL(中篇):进阶篇——吃透多表查询、事务核心与高级特性,搞定复杂业务SQL
数据库·sql·mysql
D4c-lovetrain28 分钟前
linux个人心得22 (mysql)
数据库·mysql
阿里小阿希1 小时前
CentOS7 PostgreSQL 9.2 升级到 15 完整教程
数据库·postgresql
荒川之神1 小时前
Oracle 数据仓库雪花模型设计(完整实战方案)
数据库·数据仓库·oracle
做个文艺程序员1 小时前
MySQL安全加固十大硬核操作
数据库·mysql·安全
不吃香菜学java1 小时前
Redis简单应用
数据库·spring boot·tomcat·maven
一个天蝎座 白勺 程序猿2 小时前
Apache IoTDB(15):IoTDB查询写回(INTO子句)深度解析——从语法到实战的ETL全链路指南
数据库·apache·etl·iotdb
不知名的老吴2 小时前
Redis的延迟瓶颈:TCP栈开销无法避免
数据库·redis·缓存
YOU OU2 小时前
三大范式和E-R图
数据库