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;
相关推荐
Ayka17 分钟前
Linux Qt 6安装Oracle QOCI SQL Driver插件(适用WSL)
linux·sql·qt·oracle·oci
hummhumm28 分钟前
Oracle 第19章:高级查询技术
java·数据库·python·sql·mysql·oracle·database
古月~41 分钟前
mysql error:1449权限问题 及 用户授权
数据库·mysql
hummhumm1 小时前
Oracle 第26章:Oracle Data Guard
java·大数据·前端·数据库·后端·python·oracle
小强签名设计1 小时前
Flink CDC 同步 Mysql 数据
大数据·mysql·flink
小周不摆烂2 小时前
Java基础-JDBC
java·数据库·oracle
是桃萌萌鸭~3 小时前
导出 MySQL 中所有表的结构(包括外键约束),并在另一个地方创建相同的表
数据库·mysql
阿葱(聪)3 小时前
java.lang.NoClassDefFoundError: kotlin/jvm/JvmInline
数据库·oracle
KELLENSHAW3 小时前
MySQL45讲 第十六讲 “order by”是怎么工作的?
数据库·mysql