正規表現を使って電話番号の桁数でデータを取得する
正規表現を使えば、電話番号の桁数を指定して一致するデータを取得することができます。
PostgreSQLにおける正規表現の書き方は、基本的には以下のとおりです。
select * from テーブル名 カラム名 ~ '正規表現';
具体的なコード例
id | name | like | age | address | phone_number | created_at | updated_at |
1 | 田中由美子 | tennis | 20 | 東京 | 010-2222-3333 | 2021-10-09 05:11:05 | 2021-10-09 05:11:05 |
2 | 鈴木浩 | game | 34 | 千葉 | 0120-222-4444 | 2021-10-09 05:11:05 | 2021-10-09 05:11:05 |
3 | 佐藤康明 | baseball | 19 | 神奈川 | 011-3344-2222 | 2021-10-09 05:11:05 | 2021-10-09 05:11:05 |
4 | 高橋洋子 | walking | 40 | 東京 | 010-223-4444 | 2021-10-09 05:11:05 | 2021-10-09 05:11:05 |
5 | 田島翔太 | swimming | 16 | 東京 | 0120-20-9999 | 2021-10-09 05:11:05 | 2021-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つのデータが取得できます。
id | name | like | age | address | phone_number | created_at | updated_at |
1 | 田中由美子 | tennis | 20 | 東京 | 010-2222-3333 | 2021-10-09 05:11:05 | 2021-10-09 05:11:05 |
3 | 佐藤康明 | baseball | 19 | 神奈川 | 011-3344-2222 | 2021-10-09 05:11:05 | 2021-10-09 05:11:05 |