ホーム DoRuby PostgreSQLでの正規表現検索

PostgreSQLでの正規表現検索

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

こんにちは、cloverです!

先日仕事で、ドコモのシークレットコードに対応する作業があったのですが、その際「電話番号(11ケタ)+シークレットコード(4ケタ)@ドコモ」の4ケタの部分以外の部分のマッチングが必要になりました。

LIKE検索では難しいかなぁと思って先輩に聞いてみたら、何とPostgreSQLには正規表現でのマッチングが出来るとのこと。

というわけで、ちょっと調べてみました~例えば、「090123456781234@ドコモ」というメールアドレスがあって、「09012345678xxxx@ドコモ(xxxxの部分は数値であれば何でもよい)」という条件で、マッチするデータがあるかを調べようとしたとき、
PostgreSQLでは「~(チルダ)」を用いて、正規表現検索を行います。

以下のような感じになります。

select count(*) from users where mobile_email ~ ‘09012345678[0-9]{4}@ドコモ’;

もちろんこれはRailsのfind文などでも使えるので、

User.find(:first, :conditions => [“mobile_email ~ ?”, ”09012345678[0-9]{4}@ドコモ’])

となります。

「\d(数値)や\w(英数字)」などの表現の書き方はまたちょっと違うみたいなので、そのあたりも駆使して使ってみたいと思います☆

記事を共有

最近人気な記事