2017-02-04 11 views
1

に基づいて、この分割文字列の私のような文字列を持っているハイフン

XX0099-X01 

私は

として試してみましたつまり、ハイフンに基づいて2つに XX0099X01

を文字列を分割したいです

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

2番目の部分を取得する方法がわかりません。

私たちはまだ8iのOracleデータベースを使用している古いレガシーシステムを持っています。 substrinstrの組み合わせ使用

答えて

0

:サポートされている場合

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

Oracleの基本文字列関数を使用します。 8i Oracleデータベースを使用している従来のシステムでは、上記は8iで動作していません。 Thanks – user75ponic

+0

@ user75ponic - 古いバージョン – GurV

+0

のアップデートを追加しました。ありがとう、非常に感謝しています。 – user75ponic

2

を使用すると、正規表現のサブストリング/置換を使用できない場合は、ここでそのオプションがあります

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

ありがとう、非常に感謝します。 – user75ponic

関連する問題