oracle使用CTE递归分解字符串

oracle使用CTE递归分解字符串

背景

给定一个不定长度字符串 并且以,分割例如 '1,2,3,4' 使用sql查询 返回1,2,3,4四行 如果'1,2' 则返回 1,2 两行 使用sql实现

实现sql

sql 复制代码
WITH RECURSIVE split_strings AS (
    -- 初始查询,处理第一个值
    SELECT 
        id,
        SUBSTRING_INDEX(column1, ',', 1) AS value,
        SUBSTRING(column1, LENGTH(SUBSTRING_INDEX(column1, ',', 1)) + 2) AS remaining
    FROM fs.my_table
    WHERE column1 != ''
    UNION ALL
    SELECT 
        s.id,
        SUBSTRING_INDEX(s.remaining, ',', 1) AS value,
        SUBSTRING(s.remaining, LENGTH(SUBSTRING_INDEX(s.remaining, ',', 1)) + 2) AS remaining
    FROM split_strings s
    WHERE s.remaining != ''
)
SELECT id, value
FROM split_strings
ORDER BY id, value;
相关推荐
linux-hzh6 分钟前
day01
java·mysql·算法·leetcode
比特森林探险记27 分钟前
MySQL 大战 PostgreSQL
数据库·mysql·postgresql
lifallen41 分钟前
Apache Paimon:存储结构、写入及其源码分析
java·大数据·数据仓库·sql·flink·database
许心月1 小时前
MySQL#秘籍#一条SQL语句执行时间以及资源分析
mysql
爱编程的小新☆1 小时前
【MySQL】联合查询(下)
数据库·sql·mysql
码小跳2 小时前
如何使用.Net Reactor 批量加密 DLL
c#·.net
vvilkim2 小时前
深入理解C#中的LINQ:数据查询的终极利器
开发语言·c#·linq
ghost1433 小时前
C#学习26天:内存优化的几种方法
开发语言·学习·性能优化·c#
XiaoCCCcCCccCcccC8 小时前
MySQL 表内容的增删查改 -- CRUD操作,聚合函数,group by 子句
数据库·mysql
码农捻旧8 小时前
MySQL 9.3 超详细下载安装教程(Windows版)附图文说明
数据库·windows·mysql·adb·程序员创富