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

MySQLでメールアドレスからドメイン名を抽出するクエリの書き方

MySQLでメールアドレス(email-id)からドメイン名を抽出したい場合は、SUBSTRING_INDEX()関数を使用します。まずはサンプル用のテーブルを作成しましょう。

mysql> create table DemoTable
-> (
-> UserMailId varchar(100)
-> );
Query OK, 0 rows affected (0.68 sec)

次に、INSERTコマンドを使ってテーブルにレコードを挿入します。

mysql> insert into DemoTable values('John@gmail.com');
Query OK, 1 row affected (0.20 sec)

mysql> insert into DemoTable values('Carol94844@yahoo.com');
Query OK, 1 row affected (0.25 sec)

SELECT文でテーブル内のすべてのレコードを表示して確認します。

mysql> select *from DemoTable;

出力結果

上記のクエリを実行すると、以下のような結果が得られます。

+----------------------+
| UserMailId |
+----------------------+
| John@gmail.com |
| Carol94844@yahoo.com |
+----------------------+
2 rows in set (0.00 sec)

ドメイン名を取得するためのクエリは以下の通りです。SUBSTRING_INDEX()関数の第3引数に「-1」を指定することで、区切り文字「@」より右側の文字列、つまりドメイン名部分を抽出できます。

mysql> select substring_index(UserMailId,'@',-1) as RightSideValue from DemoTable;

出力結果

実行すると、以下のようにドメイン名だけが抽出されます。

+----------------+
| RightSideValue |
+----------------+
| gmail.com |
| yahoo.com |
+----------------+
2 rows in set (0.00 sec)

このように、SUBSTRING_INDEX()関数を活用すれば、メールアドレスからドメイン名を簡単に取り出すことができます。なお、第3引数に「1」を指定すれば逆に「@」より左側のユーザー名部分を取得することも可能です。メールアドレスの解析やドメイン別の集計など、さまざまな場面で役立つテクニックなので、ぜひ覚えておきましょう。

  1. MySQLで文字列の先頭15文字だけを表示するクエリの書き方

    MySQLで文字列の先頭(左側)から指定した文字数だけを取り出すには、LEFT()関数を使用します。第1引数に対象の文字列、第2引数に取得したい文字数を指定するだけで、手軽に部分文字列を抽出できます。 この記事では、テーブルに登録されたタイトルの先頭15文字だけを表示する方法を、実際のSQLと実行結果付きで順を追って解説します。 1. サンプルテーブルを作成する まず、CREATE TABLE文でテーブルを作成します。 mysql> create table DemoTable     -> (    &nbs

  2. MySQLストアドプロシージャ内で現在のデータベース名を取得する方法

    MySQLで現在接続しているデータベース名を取得したい場合は、DATABASE() 関数を使用します。まず、基本的な構文を見てみましょう。基本構文select database();この関数は、現在選択されているデータベースの名前を文字列として返します。データベースが選択されていない場合は NULL を返します。ストアドプロシージャへの実装次に、上記の構文を実際にストアドプロシージャの中に組み込んでみましょう。以下の手順で作成できます。mysql> delimiter // mysql> create procedure get_procedure_database_name()