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」を指定すれば逆に「@」より左側のユーザー名部分を取得することも可能です。メールアドレスの解析やドメイン別の集計など、さまざまな場面で役立つテクニックなので、ぜひ覚えておきましょう。
-
MySQLで文字列の先頭15文字だけを表示するクエリの書き方
MySQLで文字列の先頭(左側)から指定した文字数だけを取り出すには、LEFT()関数を使用します。第1引数に対象の文字列、第2引数に取得したい文字数を指定するだけで、手軽に部分文字列を抽出できます。 この記事では、テーブルに登録されたタイトルの先頭15文字だけを表示する方法を、実際のSQLと実行結果付きで順を追って解説します。 1. サンプルテーブルを作成する まず、CREATE TABLE文でテーブルを作成します。 mysql> create table DemoTable -> ( &nbs
-
MySQLストアドプロシージャ内で現在のデータベース名を取得する方法
MySQLで現在接続しているデータベース名を取得したい場合は、DATABASE() 関数を使用します。まず、基本的な構文を見てみましょう。基本構文select database();この関数は、現在選択されているデータベースの名前を文字列として返します。データベースが選択されていない場合は NULL を返します。ストアドプロシージャへの実装次に、上記の構文を実際にストアドプロシージャの中に組み込んでみましょう。以下の手順で作成できます。mysql> delimiter // mysql> create procedure get_procedure_database_name()