Oracle字符串操作可基于定界符排除特定字符

时间:2019-03-29 09:12:04

标签: oracle

从字符串ES-123456-PSA Spain-101中,我只需要提取ES-123456-101分隔符位置是固定的。

尝试REGEXP_SUBSTR('ES-123456-PSA Spain-101','[^-]+',2,3 ),从而获得了PSA西班牙。

有没有办法忽略这些特定字符并返回其余字符。

2 个答案:

答案 0 :(得分:1)

如果您想要ES-123456-101,请使用此:

SELECT REGEXP_REPLACE('ES-123456-PSA Spain-101', '[^-]+-', '', 1, 3 )
FROM dual;

如果您想要ES-12345-101,那么可以解释12345而不是123456的逻辑吗?错字还是省略最后一个字符?

答案 1 :(得分:1)

您还可以使用subtrinstr

with t as
(
  select 'ES-123456-PSA Spain-101' as text from dual
)

select substr(text,1,instr(text,'-',1,2)) -- ES-123456-
       ||substr(text,instr(text,'-',1,3)+1) -- 101
from t