我有一个分数不足的字符串和一些字符。我需要应用子字符串并在左边获取值,不包括下划线。所以我应用了下面的公式,并且它对那些有下划线(\的字符串正确工作。但是对于没有(\的字符串,它会带来null。任何关于如何在子字符串本身中处理的建议。
例如:\ U basl--->工作正常;--->给出空值
我的公式如下-
select SUBSTR('ABC_BAS',1,INSTR('ABC_BAS','_')-1) from dual;
ABC
select SUBSTR('ABC',1,INSTR('ABC','_')-1) from dual;
(NULL)
6条答案
按热度按时间wpcxdonn1#
你需要一个
CASE
要首先检查下划线的表达式:yqlxgs2m2#
使用正则表达式匹配:
返回“”,并且
还返回“”。
db<>在这里摆弄
编辑
上面给出了正确的结果,但我错过了最简单的正则表达式:
退货
'ABC'
,也一样db<>在这里摆弄
anhgbhbe3#
另一种方法是使用
DECODE
在substr
具体如下:eivnm1vs4#
你好像想把一切都安排到第一个
'_'
. 如果是这样,一种方法使用regexp_replace()
:更简单的方法是:
这是一把小提琴。
mm5n2pyu5#
我会用
或者如果性能是个问题,
例如,
nwwlzxa76#
好的,我想我明白了。将nvl添加到子字符串并插入如下条件-