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;
相关推荐
EIP低代码平台5 小时前
EIP 低代码平台 - 角色维护
低代码·c#·权限·工作流·netcore
Database_Cool_7 小时前
OLTP 和 OLAP 区别详解:分析型数据库和事务型数据库怎么选(附阿里云 AnalyticDB MySQL 选型指南)
数据库·mysql·阿里云
Database_Cool_8 小时前
单机 MySQL 迁移到分布式数据库方便吗?阿里云 PolarDB-X 100% MySQL 协议兼容零改造平滑迁移
数据库·分布式·mysql
姜太小白9 小时前
【MySQL】 索引优化实战:解决 WHERE 等值 + IS NULL 查询,TEXT 字段报错 1167 的完整指南
数据库·mysql
liuxiaowei310 小时前
【绝版教程】新版MySQL DBA高级实战进阶班 MySQL8.0 姜承尧-腾讯数据库总监
数据库·mysql·dba
心平气和量大福大10 小时前
C#-WPF-控件-TextBox 数据绑定
开发语言·c#·wpf
sg_knight12 小时前
MySQL 存储过程详解:从入门到实战
android·数据库·mysql·database·dba·关系型数据库·db
Database_Cool_14 小时前
企业级多模态分析计算引擎选型:首选 AnalyticDB MySQL 向量 + SQL + 实时一体化方案
数据库·sql·mysql
-银雾鸢尾-14 小时前
C#中HashTable相关方法
开发语言·c#
宇宙第一小趴菜16 小时前
五、Oracle vs MySQL 架构深度对比笔记
mysql·oracle·架构