gpt4 book ai didi

string - 使用 pl/sql 在空值上使用连接级别拆分字符串

转载 作者:行者123 更新时间:2023-12-01 09:31:25 24 4
gpt4 key购买 nike

我在 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 代码吗?我怎样才能让它正常工作?

最佳答案

您可以结合 INSTRSUBSTR 来达到预期的效果:

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
;

关于string - 使用 pl/sql 在空值上使用连接级别拆分字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14829972/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com