【发布时间】:2013-04-24 02:02:36
【问题描述】:
我在 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;
【问题讨论】:
-
您有前瞻功能吗?例如您可以执行正则表达式 '1 或多个前瞻
~~失败的任何字符'
标签: oracle