MySQLで最後のドット(.)以降の部分文字列を取得する方法
MySQLで文字列の中から最後のドット(.)より後ろの部分を取り出したい場合は、SUBSTRING_INDEX() 関数を使うのが便利です。この関数は、指定した区切り文字を基準に文字列を分割し、必要な部分だけを返してくれます。
この記事では、実際にテーブルを作成し、サンプルデータを使いながら最後のドット以降の部分文字列を取得する手順を解説します。
1. サンプルテーブルの作成
まず、CREATE TABLE文でテーブルを作成します。
mysql> create table DemoTable1341
-> (
-> Value varchar(60)
-> );
Query OK, 0 rows affected (0.75 sec)
2. テストデータの挿入
次に、INSERTコマンドを使っていくつかのレコードを挿入します。
mysql> insert into DemoTable1341 values('John.123.@gmail.com');
Query OK, 1 row affected (0.27 sec)
mysql> insert into DemoTable1341 values('Carol.Taylor.gmail');
Query OK, 1 row affected (0.24 sec)
mysql> insert into DemoTable1341 values('C.MyFolder.Location');
Query OK, 1 row affected (0.10 sec)3. 登録したレコードの確認
SELECT文ですべてのレコードを表示してみましょう。
mysql> select * from DemoTable1341;
実行すると、次のような結果が得られます。
+---------------------+
| Value |
+---------------------+
| John.123.@gmail.com |
| Carol.Taylor.gmail |
| C.MyFolder.Location |
+---------------------+
3 rows in set (0.00 sec)
4. 最後のドット以降の部分文字列を取得するクエリ
ここが本題です。最後のドット以降の文字列を取得するには、SUBSTRING_INDEX() の第3引数に -1 を指定します。
mysql> select substring_index(Value, '.', -1) from DemoTable1341;
実行結果は以下のとおりです。
+---------------------------------+
| substring_index(Value, '.', -1) |
+---------------------------------+
| com |
| gmail |
| Location |
+---------------------------------+
3 rows in set (0.00 sec)
SUBSTRING_INDEX() 関数のポイント
SUBSTRING_INDEX(対象文字列, 区切り文字, カウント) の動作は次のとおりです。
- カウントが正の値の場合:左側から数えて、指定した番目の区切り文字より左側のすべてを返します。
- カウントが負の値の場合:右側から数えて、指定した番目の区切り文字より右側のすべてを返します。
つまり、「-1」を指定すると、最後の区切り文字(この場合はドット)より右側の文字列、すなわち「com」「gmail」「Location」が取得できるというわけです。メールアドレスのドメイン抽出や、ファイルパスから拡張子・フォルダ名を取り出す処理など、さまざまな場面で活用できる便利な関数なので、ぜひ覚えておきましょう。
-
MySQLで特定の日付のレコード数をカウントする方法
MySQLでは、COUNT(*)関数とWHERE句を組み合わせることで、特定の日付に該当するレコードの件数を簡単に取得できます。この記事では、サンプルテーブルを作成し、指定した日付のデータ件数をカウントする手順を順番に解説します。 1. サンプルテーブルの作成 まず、日付型(DATE)のカラムを持つテーブルを作成しましょう。 mysql> create table DemoTable1946 ( ShippingDate date ); Quer
-
MySQLで最大の累積値とその出現回数を取得するクエリの書き方
カラム同士を掛け合わせた値(累積値)の中から最大値と、その出現回数を取得したい場合は、集計関数 COUNT(*) をサブクエリと組み合わせて使用します。あわせて GROUP BY 句も活用します。テーブルの作成まず、以下のコマンドでテーブルを作成しましょう。mysql> create table demo23-> (-> id int not null auto_increment primary key,-> value1 int,-> value2 int-> );Query OK, 0 rows affected (1.65 sec)レコードの挿入続い