2017-02-10 8 views
1

内の文字列からサブ文字列を選択して、列を移入:以下のように私は値を使用したOracleテーブルの列を持つOracleの

Column_name 
test.123.yen.12345567 
abc.234.rau.42525252 
eng.111.rai.73540740 

今、私は同じテーブル内の別の列を持っているがregex_columnを言います。この列では、最後のオカレンスまでの文字列からサブ文字列を抽出するような方法で値を設定したいと思います。

最終結果は以下のようになります。

regex_column 
test.123.yen 
abc.234.rau 
eng.111.rai 

正規表現を使用してこれを達成するにはどうすればよいですか、それとも他の方法でこれを達成できますか?

+0

ですから、それ以下の最後の期間、すべてを削除したいです。文字列にピリオドがない場合の結果はどうでしょうか? – mathguy

答えて

2

1つのオプションは、Oracleの基本文字列関数を使用することです:

SELECT SUBSTR(col, 1, INSTR(col, '.', -1, 1) - 1) AS regex_column 
FROM yourTable 

ます。また、正規表現の部分文字列を使用することができます。エッジケースに対処するため

はまったく期間を持たないエントリがあった場合、その後、INSTR()への呼び出しは、0を返します、そしてSUBSTR()はちょうど列で最後の文字を返します、@mathguyによって指摘しました。正規表現機能regexp_replaceを使用して

0

一つの方法は次のとおりです。

select 
    regexp_replace(c,'(\.[^.]*$)') 
from t; 
関連する問題