[Oracle] Translate関数で文字列に数字以外の文字があるか判定する

Pocket

あつい!!!!!どうしようもなくあつい!!!!

話に脈略がなくて申し訳ございません。

ここでは、文字列型のカラムに 0 ~ 9 までの文字以外がないか確認するSQLのサンプルを掲載しています。

スポンサーリンク

Translate関数を使う

以下のSQLでは、文字列型のカラムに 0 ~ 9 以外の文字が含まれている場合、その一覧を取得するSQLになります。


select 
    * 
from 
    table1 
where 
    trim(translate(col1, '0123456789', ' ')) is not null

translate関数で 0 ~ 9 の文字を半角スペースに変換し、trim関数でスペースを除去しています。その結果、数字以外の文字が含まれている場合、結果が null にならないことを利用しています。

なお、Translate関数で半角スペースではなく ” にすると、数字を除去できそうですが、残念ながらできません。以下のSQLでは期待する動作にはなりません。


select 
    * 
from 
    table1 
where 
    trim(translate(col1, '0123456789', '')) is not null


小ネタの紹介でした。

スポンサーリンク


Pocket

Leave a Comment

Your email address will not be published. Required fields are marked *