2014年3月31日月曜日

Oracleで正規表現

10gより、正規表現が使えます。

REGEXP_LIKE という関数を使います。

構文例

SELECT * FROM DATA
WHERE
REGEXP_LIKE(ATAI,'^[0-9]+[\.]*[0-9]*$')


数値:^[0-9]+[\.]*[0-9]*$
数字範囲:^[0-9]+[\.]*[0-9]*~[0-9]+[\.]*[0-9]*$


正規表現はあまり詳しくないのでお許しくださいませ。

これで、よくネットでQAが上がっている「ISDATEと同等の関数ありませんか?」とか
「ISNumericと同等の関数ありませんか?」とかが少しでも
解決するのではいかという気がします。


追伸:他のRDBMSでも類似機能がありました。
MSSQL : LIKEで可能
MySQL : LIKEと似た機能で、Col RegExp 正規表現 という形で実現


0 件のコメント: