我的字符串如下,
ABC_blahblahblah
DEFGH_moreblahblahblah
IJKLMNOP_moremoremoremore。
我需要结果,
blahblahblah
moreblahblahblah
在oracle中更多更多。
SELECT NVL(SUBSTR('ABC_blah', 0, INSTR('ABC_blah', '_')-1), 'ABC_blah') AS output
FROM DUAL.
以上查询仅提供左手边,但我怎样才能从右手边获得。
答案 0 :(得分:0)
select substr('ajgdjadg',-4) from dual;
Output:
SUBSTR('AJGDJADG',-4) |
------------------------
jadg |
当您指定负长度时,可以使用SUBSTR
执行此操作。
在你的情况下
select substr('ABC_blahblahblah',-12) from dual;
SELECT SUBSTR('ABC_blahblahblah',-LENGTH('ABC_blahblahblah')+INSTR('ABC_blahblahblah', '_') ) AS output
FROM dual;
答案 1 :(得分:0)
使用substr
和instr
:
select substr(col, instr(col,'_',-1)+1) from t;
使用regexp_replace
:
select regexp_replace(col,'.*_(.*)','\1') from t;
使用regexp_substr
:
select regexp_substr(col, '[^_]+$') from t;
答案 2 :(得分:0)
select substr('ABC_blahblahblah',instr('ABC_blahblahblah','_')+1) output from dual;
blahblahblah