使用regexp_substr在oracle查询中拆分字符串

时间:2018-07-24 13:53:20

标签: regex substr

我有一个像R09801E_ZJDE0001这样的字符串。通过使用以下systax,我可以拆分字符串的第一部分,_R09801E)之前的部分

regexp_substr('R09801E_ZJDE0001', '[^_]+', 1, 1)

有人可以建议如何获取_ZJDE0001)之后的字符串的第二部分吗?

1 个答案:

答案 0 :(得分:1)

您实际上可以使用基本字符串函数执行此操作:

SELECT
    SUBSTR(col, 1, INSTR(col, '_') - 1) AS first_part,
    SUBSTR(col, INSTR(col, '_') + 1) AS second_part
FROM yourTable;

enter image description here

Demo

我建议采用这种方法的原因是,将SUBSTRINSTR一起使用可能会胜过基于正则表达式的解决方案。

如果您真的想使用正则表达式方法,则建议使用REGEXP_REPLACE

SELECT REGEXP_REPLACE('R09801E_ZJDE0001', '.*_', '') AS second_part
FROM dual;

这将删除下划线之前(包括下划线)之前的所有内容,从而使我们剩下第二部分。