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;
相关推荐
尚雷55806 分钟前
Oracle 多租户架构下常用运维SQL
数据库·sql·oracle
OceanBase数据库官方博客13 分钟前
你的数据库是否为 Agent 准备好?
数据库·oracle
无小道34 分钟前
Mysql——吃透事务以及隔离级别
mysql·面试·事务·隔离级别
星河耀银海36 分钟前
Unity C#入门:变量的定义与访问权限(public/private)
unity·c#·lucene
asdzx671 小时前
使用 C# 添加或读取 Excel 公式:完整指南
开发语言·c#·excel
加号31 小时前
【C#】 中 BCD 字节数组转十进制字符串的原理与实现思路
开发语言·c#
爱码小白1 小时前
MySQL易忘知识点梳理
数据库·mysql
周杰伦fans1 小时前
C# 从 List 中移除另一个集合
windows·c#
战南诚1 小时前
mysql - 行列数据转换技巧
数据库·mysql
大空大地20261 小时前
C#进阶语法**总结
c#