【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执行结果:

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

相关推荐
清风~徐~来7 分钟前
【视频点播系统】Etcd-SDK 介绍及使用
数据库·etcd
计算机毕设VX:Fegn08958 分钟前
计算机毕业设计|基于springboot + vue球鞋购物系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
仍然.10 分钟前
MYSQL--- 表的设计
数据库·mysql
资深数据库专家18 分钟前
EBS 中出现的“销售退货单库存已回冲,但生产成本未变化”的问题
人工智能·经验分享·oracle·微信公众平台·新浪微博
数据知道22 分钟前
PostgreSQL的连接方式有哪些?有哪些连接工具?
数据库·postgresql
柚子科技24 分钟前
毕业设计不用愁:一个免费的 SQL 转 ER 图在线工具,真香!
数据库·sql·毕业设计·课程设计·毕设
xuefuhe24 分钟前
postgresql获取真正的execution plan
数据库·postgresql
xcLeigh25 分钟前
KingbaseES数据库:ksql 命令行从建表到删表实战(含避坑指南)
数据库·增删改查·国产数据库·金仓数据库
我是黄骨鱼25 分钟前
【零基础学数据库|第五篇】DDL语句的使用
数据库
鸽芷咕26 分钟前
从 Query Mapping 到函数缓存,KingbaseES 高级 SQL 调优手段全揭秘
数据库·sql·缓存·金仓数据库