如何从Oracle SQL中选择一个子字符串,直到特定字符?

时间:2017-01-02 05:14:30

标签: sql oracle

我的字符串如下,

  

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.

以上查询仅提供左手边,但我怎样才能从右手边获得。

3 个答案:

答案 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)

使用substrinstr

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