2016-05-17 30 views
1

私は後に文字列を取得したいと思います。後に文字列を取得する。オラクルの正規表現を通して

SELECT REGEXP_REPLACE(REGEXP_SUBSTR (name, '..+' , 1), '.', '', 1, 1) FROM table_POS; 

しかし、それがあるように私は、列の詳細を取得しています:これは私がこれを使用しています

Secretary 
Manager - Liaison 
Community Relations Officer 

に変換する必要があります

Office.Secretary 
XYZ.Manager - Liaison 
ABC.Community Relations Officer 

:のような値を持つテーブルのPOSから。

+1

(名前、 '' '^ [^。] + [。]')REGEXP_REPLACEを選択してください 'table_POS FROM;' –

+0

感謝を!これは働いた.. –

答えて

0
select regexp_replace('ABC.Community Relations Officer','([^\.]{0,}\.)(.*)','\2') from dual; 

regexpグループのキャプチャを試してください。

1-st group ([^\.]{0,}\.) - 最初のドットとすべて一致します。

2-nd group (.*) - ドットの後にすべて一致します。

'\2' - 文字列全体を2番目のグループの値で置き換えます。

将来的には、グループの順序を変更することができます。

select regexp_replace('ABC.Community Relations Officer','([^\.]{0,}\.)(.*)','\2 -- \1') from dual; 
0

あなたが最初.後に削除したい場合は、文字列のチャンクを削除する必要がある場合あなたは、あなたが

SELECT REGEXP_REPLACE(name, '^.*?\.' , '') FROM table_POS; 
1

を使用することができます

SELECT REGEXP_REPLACE(name, '^.*\.' , '') FROM table_POS; 

(それは最後の.後に削除されます)を使用することができます初めからの最初のドットまでは、否定文字クラスの正規表現ソリューションを使用する必要があります。

SELECT REGEXP_REPLACE(name, '^[^.]+[.]', '') FROM table_POS; 

注ここで、

  • ^ - 文字列
  • [^.]+の開始と一致する - 文字通りドット
  • [.]以外の1つの以上の文字にマッチする - リテラルのドットと一致します。

一致する部分文字列全体が空の文字列に置き換えられて削除されます。

最後のドットまでの文字列を削除する必要がある場合は、SELECT REGEXP_REPLACE(name, '^.+[.]', '') FROM table_POS;のようなロックの解決策が必要です。

関連する問題