我有一个像R09801E_ZJDE0001
这样的字符串。通过使用以下systax,我可以拆分字符串的第一部分,_
(R09801E
)之前的部分
regexp_substr('R09801E_ZJDE0001', '[^_]+', 1, 1)
有人可以建议如何获取_
(ZJDE0001
)之后的字符串的第二部分吗?
答案 0 :(得分:1)
您实际上可以使用基本字符串函数执行此操作:
SELECT
SUBSTR(col, 1, INSTR(col, '_') - 1) AS first_part,
SUBSTR(col, INSTR(col, '_') + 1) AS second_part
FROM yourTable;
我建议采用这种方法的原因是,将SUBSTR
与INSTR
一起使用可能会胜过基于正则表达式的解决方案。
如果您真的想使用正则表达式方法,则建议使用REGEXP_REPLACE
:
SELECT REGEXP_REPLACE('R09801E_ZJDE0001', '.*_', '') AS second_part
FROM dual;
这将删除下划线之前(包括下划线)之前的所有内容,从而使我们剩下第二部分。