トップページに戻る    次のSQLパズルへ    前のSQLパズルへ

2-1-14 文字列の指定文字以外を消去

SQLパズル

テーブル
Val
----------------------------------
織田信長0-1-2-3徳川家康456豊臣秀吉

文字列の数字以外を消去する。

出力結果
Val                                 数字以外を消去
----------------------------------  --------------
織田信長0-1-2-3徳川家康456豊臣秀吉    0123456


SQL

--■■■translate関数を使用する方法1■■■
select Val,
translate(Val,'0' || translate(Val,'a0123456789','a'),'0') as 数字以外を消去
from (select '織田信長0-1-2-3徳川家康456豊臣秀吉' as Val from dual);

--■■■translate関数を使用する方法2■■■
select Val,
translate(Val,'0123456789' || Val,'0123456789') as 数字以外を消去
from (select '織田信長0-1-2-3徳川家康456豊臣秀吉' as Val from dual);

--■■■正規表現を使用する方法(10g以降)■■■
select Val,
RegExp_Replace(Val,'[^0-9]') as 数字以外を消去
from (select '織田信長0-1-2-3徳川家康456豊臣秀吉' as Val from dual);


解説

translate関数を使用する方法1では、
変換前の文字列から、
変換前の文字列から作成した数字以外の文字リストを使って、
数字以外の文字を消去してます。

translate関数を使用する方法2は、非推奨と思われます。
SQL command + to select the Number from a string(英語)