我在 Oracle 中有一个由连续分隔符波浪号 (~) 分隔的通用字符串。例如,字符串是'apple~orange~~mango~~grapes'。它需要转换为行,但要注意的重要一点是分隔符是连续的波浪号而不是单个波浪号。输出应如下所示:
苹果~橙子
芒果
葡萄
解决方法已经使用 instr 和 substr oracle 函数完成,但我需要使用 Oracle 正则表达式的更清洁的解决方案。我试过使用下面的查询,但没有得到正确的解决方案:
WITH str AS (SELECT 'apple~orange~~mango~~grapes' str FROM dual),
cnt AS (SELECT LEVEL sno FROM dual CONNECT BY LEVEL < 5)
SELECT regexp_substr (str, '[^~]+', 1, sno) FROM str CROSS JOIN cnt;