2017-02-04 127 views
1

我有这样一个字符串这分割字符串基于连字符

XX0099-X01 

我想基于连字符的字符串,一分为二,即 XX0099X01

我曾尝试为

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

不确定如何获得第二部分。

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

回答

0

使用的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; 
+0

我们有一个ol d仍然使用8i Oracle数据库的遗留系统,以上不在8i中工作。谢谢 – user75ponic

+0

@ user75ponic - 为旧版本添加了更新 – GurV

+0

非常感谢,非常感谢。 – user75ponic

2

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

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

非常感谢,非常感谢。 – user75ponic