DB

SQL Serverでピリオドを複数含む同一ユーザーのGメールを検索してみた

Gmail アドレスの場合、ピリオドを複数含む場合も、同一ユーザーとして扱われる。
https://support.google.com/mail/answer/7436150

上記サイトに記載の通り、以下のメールアドレスが同一ユーザーとなる。

  • johnsmith@gmail.com
  • john.smith@gmail.com
  • jo.hn.sm.ith@gmail.com
  • j.o.h.n.s.m.i.t.h@gmail.com

今回は、SQL Serverで、上記メールアドレスを全て一括検索できるSQLを作成してみたので、その手順を共有する。

前提条件

下記記事の「前提条件」の内容が完了していること。

Spring BootでSQL Serverに接続しMyBatisを利用してみた今回は、Spring Bootアプリケーションで接続するデータベースをSQL Serverに変更してみたので、そのサンプルプログラムを共...

ピリオドを複数含む同一ユーザーの検索

ピリオドを複数含む同一ユーザーの検索を行った結果は、以下の通り。

1) 以下のデータがある状態からスタートする。

SELECT * FROM user_data ORDER BY id ASC
ピリオドを複数含む同一ユーザーの検索_1 エンジニアファーストバナー

2) 以下のように、memo欄のメールアドレスのピリオドを除去すると、ピリオドを複数含む同一ユーザーが全て「johnsmith@gmailcom」であることが確認できる。

SELECT id, name, birth_year, birth_month, birth_day
     , sex, REPLACE(memo, '.', '') AS memo
FROM user_data 
ORDER BY id ASC
ピリオドを複数含む同一ユーザーの検索_2

3) 2)の結果を利用すると、以下のSQLにより、ピリオドを複数含む同一ユーザーのGメールを検索できる。

SELECT * FROM user_data 
WHERE REPLACE(memo, '.', '') = 'johnsmith@gmailcom'
ORDER BY id ASC
ピリオドを複数含む同一ユーザーの検索_3

要点まとめ

  • Gmail アドレスの場合、ピリオドを複数含む場合も、同一ユーザーとして扱われる。
  • ピリオドを複数含む同一ユーザーの検索は、REPLACE関数を利用して、メールアドレスのピリオドを除去することで行える。