【PostgreSQL】正規表現で電話番号を検索するには?

正規表現を使って電話番号の桁数でデータを取得する

正規表現を使えば、電話番号の桁数を指定して一致するデータを取得することができます。

PostgreSQLにおける正規表現の書き方は、基本的には以下のとおりです。

select * from テーブル名 カラム名 ~ '正規表現';

具体的なコード例

idnamelikeageaddressphone_numbercreated_atupdated_at
1田中由美子tennis20東京010-2222-33332021-10-09 05:11:052021-10-09 05:11:05
2鈴木浩game34千葉0120-222-44442021-10-09 05:11:052021-10-09 05:11:05
3佐藤康明baseball19神奈川011-3344-22222021-10-09 05:11:052021-10-09 05:11:05
4高橋洋子walking40東京010-223-44442021-10-09 05:11:052021-10-09 05:11:05
5田島翔太swimming16東京0120-20-99992021-10-09 05:11:052021-10-09 05:11:05

一般的に使われる携帯電話のような「3桁-4桁-4桁」を一致させる正規表現は、次のようになります。

[0-9]{3}-[0-9]{4}-[0-9]{4}
↓
(0~9の数字が3つ並ぶ)-(0~9の数字が4つ並ぶ)-(0~9の数字が4つ並ぶ) という意味

これをSQL文の中に組み込むと以下のようなコードになります。

select * from users where phone_numbers ~ '[0-9]{3}-[0-9]{4}-[0-9]{4}';

上記のコードを実行すると、電話番号が「3桁-4桁-4桁」である2つのデータが取得できます。

idnamelikeageaddressphone_numbercreated_atupdated_at
1田中由美子tennis20東京010-2222-33332021-10-09 05:11:052021-10-09 05:11:05
3佐藤康明baseball19神奈川011-3344-22222021-10-09 05:11:052021-10-09 05:11:05

タイトルとURLをコピーしました