2

我有一个这样的字符串

XX0099-X01

我想根据连字符将字符串分成两部分,即 XX0099X01

我试过了

SELECT 'XX0099-X01',
           SUBSTR('XX0099-X01',
                  1,
                  INSTR('XX0099-X01',
                        '-',
                        1
                        ) -1
                  )
    FROM   dual

不知道如何获得第二部分。

我们有一个旧的遗留系统,它仍在使用 8i Oracle 数据库。

4

2 回答 2

4

使用substr和的组合instr

select 
  substr(s, 1, instr(s, '-') - 1),
  substr(s, instr(s, '-') + 1)
from t;

regexp_substr如果支持,另一种方法是使用:

select 
  regexp_substr('XX0099-X01','[^-]+', 1, 1),
  regexp_substr('XX0099-X01','[^-]+', 1, 2)
from dual;
于 2017-02-04T07:21:09.430 回答
3

如果您不能使用正则表达式子字符串/替换,这里有一个使用 Oracle 基本字符串函数的选项:

SELECT SUBSTR(col, 1, INSTR(col, '-') - 1) AS first_part,
       SUBSTR(col, INSTR(col, '-') + 1)    AS second_part
FROM yourTable
于 2017-02-04T07:23:38.207 回答