简化此方法以拆分字符串,同时允许null:
select regexp_substr('A~^B~^C~D^E','(.*?)(~^|$)', 1, level, null, 1) from dualconnect by level < regexp_count('A~^B~^C~D^E','(.*?)(~^|$)');REGEXP_SUBS-----------ABC~D^E与链接的答案一样,它会非贪婪地寻找任何字符,然后是
~^(插入符号是转义的
~^)或行尾的组合。该
regexp_substr()电话还采用了可选的参数指定
subexpr-所以只得到了第一组(
.*?),而不是分隔符本身,这是在第二组。
如果您想要一个特定的元素,那就更接近链接的帖子了:
select regexp_substr('A~^B~^C~D^E','(.*?)(~^|$)', 1, 3, null, 1) from dual;REGEX-----C~D^E或者在过程中执行此操作时,如果要查看多个集合,请使用connect-by查询填充集合,然后选择所需的元素。



