この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。
PostgreSQLでも正規表現を使える、なんてことできるんですよねっ
ってわけで、今回はそれを踏まえて正規表現にマッチした文字列を抽出しようと思います。
なんてこたぁない。
SELECT
SUBSTRING(mobile_email FROM '(docomo|softbank|ezweb)') AS carrier2
, carrier
FROM
users
;
これで、あるテーブルを用意し、実行結果をみると、
carrier2 | carrier
----------+----------
docomo | DoCoMo
docomo | DoCoMo
ezweb | au
softbank | SoftBank
softbank | SoftBank
ezweb | au
docomo | DoCoMo
docomo | DoCoMo
のように並びました。
上記のSQLでは、携帯のメールアドレスからdocomo、softbank、ezwebのいずれかにマッチした かどうかを見て、()内の正規表現にマッチしている文字列を記憶して、carrier2として取得しています。
これ、実は、登録されているキャリアとメールアドレスのドメインの整合性がとれているかどうかをチェックしようと思って作ってみました。
上記の内容がわかりにくいでしょうか?
Rubyで書いたら
/(docomo|softbank|ezweb)/ =~ mobile_email
p $1
といったところでしょうか。
これならピンときました?