我在 Oracle pl/sql 中使用以下代码
(版本:Oracle 数据库 11g 版本 11.2.0.1.0)
select regexp_substr('A~B~C','[^~]+',1,level) output
from dual
connect by level <= length(regexp_replace('A~B~C','[^~]+')) + 1
给出以下结果
row1: A
row2: B
row3: C
这是完美的,但是我应该给出一个空值,即:
select regexp_substr('~B~C','[^~]+',1,level) output
from dual
connect by level <= length(regexp_replace('~B~C','[^~]+')) + 1
我期望并想要以下内容:
row1: <null>
row2: B
row3: C
但得到这个输出:
row1: B
row2: C
row3: null
我的 pl/sql 代码是否错误?我怎样才能让它正常工作?
你可以结合INSTR
und SUBSTR
达到预期的结果:
select
str,
replace(substr(str,
case level
when 1 then 0
else instr( str, '~',1, level-1)
end
+1,
1
), '~')
from ( select 'A~B~C~D~E' as str from dual)
connect by level <= length(regexp_replace(str,'[^~]+')) + 1
;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)