您好,我需要在Oracle SQL中拆分文本,
输入和输出如图所示。在第一个部分,我有原始数据在一列(在图A列)。在第二个部分,我需要返回(输出)。
我问题是:
select val,
CASE
when substr(val, 1, instr(val, '/') - 1) is null then val
ELSE substr(val, 1, instr(val, '/') - 1)
end as "LEVEL1",
substr(VAL,
instr(val, '/',1)+1,
instr(val, '/',1,2)-instr(val, '/',1)-1) "LEVEL2",
substr(VAL, instr(val, '/') ) "aparat3"
from rmtd1.split_row;
2条答案
按热度按时间omtl5h9j1#
您实际上不需要超过
regexp_substr()
(^|/)
查找/
的开头([^/]*)
捕获(^|/)
每次命中后的所有内容1.第三个参数(
1
)告诉它在输入中从何处开始1.第4个参数(
1
-4
)选择返回的匹配项1.第5个参数用于调整匹配的确定方式
1.最后一个参数从上面第2点中的第二个子表达式
([^/]*)
中选择命中demo
gg58donl2#
另一种方法是为了争论。
DBFiddle