MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLのテーブルから無効なメールアドレスを抽出する方法

MySQLのテーブルに保存されたデータの中から、無効なメールアドレスを検出したいケースは少なくありません。そんなときに便利なのが、LIKE演算子の否定形である「NOT LIKE」を使った方法です。以下の構文を使用することで、無効なメールアドレスのリストを簡単に抽出できます。

SELECT yourColumnName FROM yourTableName
WHERE yourColumnName NOT LIKE '%_@_%._%';

この構文では、「@」が含まれていないメールアドレスや、「@」の後にドット「.」が存在しないメールアドレスを無効なものとして判定します。パターン「%_@_%._%」は、「1文字以上の文字列 + @ + 1文字以上の文字列 + ドット + 1文字以上の文字列」という、メールアドレスの基本的な形式を表しています。

実際の動作を確認するために、サンプルテーブルを作成しましょう。以下のクエリでテーブルを作成します。

mysql> create table FindInvalidEmailAddressDemo
    -> (
    -> Id int NOT NULL AUTO_INCREMENT,
    -> Name varchar(20),
    -> EmailAddress varchar(40),
    -> PRIMARY KEY(Id)
    -> );
Query OK, 0 rows affected (0.75 sec)

次に、INSERTコマンドを使ってテーブルにレコードを挿入します。この例では、検証用として意図的に無効なメールアドレスもいくつか登録しています。まずは登録したデータを確認してみましょう。

mysql> select *from FindInvalidEmailAddressDemo;

以下が出力結果です。

+----+-------+-------------------+
| Id | Name  | EmailAddress      |
+----+-------+-------------------+
|  1 | John  | John12@gmail.com  |
|  2 | Carol | Carol@hotmail.com |
|  3 | Mike  | 123Mike@gmailcom  |
|  4 | Bob   | Bob909hotmail.com |
|  5 | David | David@gmail.com   |
+----+-------+-------------------+
5 rows in set (0.00 sec)

テーブルの内容を見ると、3番目の「123Mike@gmailcom」は「@」の後にドットがなく、4番目の「Bob909hotmail.com」は「@」自体が存在しません。この2つが無効なメールアドレスに該当します。

それでは、無効なメールアドレスを抽出するクエリを実行してみましょう。

mysql> select EmailAddress from FindInvalidEmailAddressDemo
   -> where EmailAddress NOT LIKE '%_@_%._%';

実行結果として、無効なメールアドレスのリストが以下のように表示されます。

+-------------------+
| EmailAddress      |
+-------------------+
| 123Mike@gmailcom  |
| Bob909hotmail.com |
+-------------------+
2 rows in set (0.00 sec)

このように、NOT LIKE演算子とパターン「%_@_%._%」を組み合わせることで、形式が不正なメールアドレスを簡単に特定できます。ただし、この方法はあくまで基本的な形式チェックにとどまるため、より厳密なバリデーションが必要な場合は、正規表現を扱えるREGEXP演算子の活用も検討するとよいでしょう。

  1. MySQLテーブルからインデックスを削除する方法

    MySQLのテーブルから不要になったインデックスを削除したい場合、ALTER TABLE文とDROP INDEX句を組み合わせて使用します。この記事では、実際のSQL実行例を交えながら、インデックスを削除する手順をわかりやすく解説します。 インデックスを削除する基本構文 MySQLテーブルからインデックスを削除する際の基本構文は以下の通りです。 ALTER TABLE テーブル名 DROP INDEX `インデックス名`; インデックス名にスペースが含まれる場合は、バッククォート(`)で囲む点に注意してください。 ステップ1:サンプルテーブルを作成する まずは動作確認用のテーブルを作成しま

  2. JavaでMySQLテーブルのデータをリスト(ArrayList)として取得する方法

    JavaでMySQLテーブルからデータを取得してリスト形式に格納したい場合、ArrayListの概念を活用するのが効果的です。特に、ArrayList<ArrayList<データ型>>のように入れ子構造のArrayListを使うことで、テーブルの各行を内側のリスト、テーブル全体を外側のリストとして管理できます。基本的な構文ArrayList<ArrayList<yourDataType>> anyVariableName = new ArrayList<ArrayList<yourDataType>>();サンプルテーブル