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;
相关推荐
翻滚吧键盘44 分钟前
记录一个连不上docker中的mysql的问题
mysql·docker·容器
lixww.cn4 小时前
ASP.NET Core MVC
c#·mvc·.netcore
boonya5 小时前
Yearning开源MySQL SQL审核平台
数据库·mysql·开源
我是苏苏6 小时前
C#高级:常用的扩展方法大全
java·windows·c#
ChoSeitaku6 小时前
Unity|小游戏复刻|见缝插针2(C#)
unity·c#·游戏引擎
CPU NULL7 小时前
新版IDEA创建数据库表
java·数据库·spring boot·sql·学习·mysql·intellij-idea
lzhdim7 小时前
3、C#基于.net framework的应用开发实战编程 - 实现(三、二) - 编程手把手系列文章...
开发语言·c#·.net
J不A秃V头A7 小时前
MySQL 中开启二进制日志(Binlog)
数据库·mysql
SunkingYang7 小时前
C#编译报错: error CS1069: 未能在命名空间“System.Windows.Markup”中找到类型名“IComponentConnector”
c#·.net·错误·程序集·升级framework·error cs1069·error cs0538
秋月的私语7 小时前
c#启动程序时使用异步读取输出避免假死
java·前端·c#