口碑好网站建设开发,vi设计公司哪里,重庆公司企业网站建设,烟台开发区建设业联合会网站oracle使用CTE递归分解字符串
背景
给定一个不定长度字符串 并且以#xff0c;分割例如 ‘1#xff0c;2#xff0c;3#xff0c;4’ 使用sql查询 返回1#xff0c;2#xff0c;3#xff0c;4四行 如果‘1#xff0c;2’ 则返回 1#xff0c;2 两行 使用sql实现
实…oracle使用CTE递归分解字符串
背景
给定一个不定长度字符串 并且以分割例如 ‘1234’ 使用sql查询 返回1234四行 如果‘12’ 则返回 12 两行 使用sql实现
实现sql
WITH RECURSIVE split_strings AS (-- 初始查询处理第一个值SELECT id,SUBSTRING_INDEX(column1, ,, 1) AS value,SUBSTRING(column1, LENGTH(SUBSTRING_INDEX(column1, ,, 1)) 2) AS remainingFROM fs.my_tableWHERE column1 ! UNION ALLSELECT s.id,SUBSTRING_INDEX(s.remaining, ,, 1) AS value,SUBSTRING(s.remaining, LENGTH(SUBSTRING_INDEX(s.remaining, ,, 1)) 2) AS remainingFROM split_strings sWHERE s.remaining !
)
SELECT id, value
FROM split_strings
ORDER BY id, value;