MySQLでフィールドから最後の単語を抽出する方法(SUBSTRING_INDEX関数)
MySQLでカラム(フィールド)に格納された文字列から最後の単語を抽出したい場合は、組み込み関数である SUBSTRING_INDEX() を使用します。この関数は、区切り文字を基準に文字列を分割し、指定した位置の部分を取得できる便利な関数です。
SUBSTRING_INDEX() の基本構文
最後の単語を抽出するには、第3引数に -1 を指定します。構文は以下のとおりです。
SELECT SUBSTRING_INDEX(カラム名, ' ', -1) AS 別名 FROM テーブル名;
ポイントは以下の3つです。
- 第1引数:対象となるカラム名または文字列
- 第2引数:区切り文字(ここでは半角スペース)
- 第3引数:-1 を指定すると「右側から数えて1番目」=最後の要素が返される
サンプルテーブルの作成
実際に動きを確認するため、テスト用のテーブルを作成しましょう。以下はテーブル作成のクエリです。
mysql> create table FirstWordDemo -> ( -> AllWords longtext -> ); Query OK, 0 rows affected (0.83 sec)
次に、INSERT文を使って複数の文章(スペース区切りの単語列)を挿入します。
mysql> insert into FirstWordDemo values('This is the first MySQL Query');
Query OK, 1 row affected (0.11 sec)
mysql> insert into FirstWordDemo values('MySQL is a Relational Database');
Query OK, 1 row affected (0.17 sec)
mysql> insert into FirstWordDemo values('FirstWord is not correct');
Query OK, 1 row affected (0.21 sec)登録データの確認
SELECT文ですべてのレコードを表示してみます。
mysql> select * from FirstWordDemo;
実行結果は以下のとおりです。
+--------------------------------+ | AllWords | +--------------------------------+ | This is the first MySQL Query | | MySQL is a Relational Database | | FirstWord is not correct | +--------------------------------+ 3 rows in set (0.00 sec)
最後の単語を抽出するクエリ
それでは、冒頭で紹介した構文を使って、各レコードの最後の単語を抽出してみましょう。クエリは次のとおりです。
mysql> select SUBSTRING_INDEX(AllWords, ' ', -1) as MyLastWordResult from FirstWordDemo;
実行結果:
+------------------+ | MyLastWordResult | +------------------+ | Query | | Database | | correct | +------------------+ 3 rows in set (0.00 sec)
このように、各行の末尾にある単語(Query、Database、correct)が正しく抽出されました。
補足:最初の単語を抽出する場合
逆に、最初の単語を取得したい場合は、第3引数に 1 を指定します。
SELECT SUBSTRING_INDEX(AllWords, ' ', 1) AS FirstWord FROM FirstWordDemo;
また、区切り文字はスペースに限らず、カンマ(,)やハイフン(-)など任意の文字を指定できます。たとえばCSV形式の文字列から最後の項目を取り出す場合にも、同じ考え方で応用可能です。
-
MySQLでテーブルの最後の10件のレコードを取得する方法
MySQLでテーブルの末尾にある10行(最新の10件)を取得したい場合は、SELECT文とLIMIT句を組み合わせたサブクエリを利用します。この記事では、実際にテーブルを作成し、データを挿入しながら、最後の10件を取得するクエリの手順を具体的に解説します。 1. サンプルテーブルの作成 まず、動作確認用のテーブルを作成します。 mysql> create table Last10RecordsDemo -> ( -> id int, -> name varchar(100) -> ); Query OK, 0 rows affected
-
MySQLで列の値から末尾の2文字を削除するクエリの書き方
MySQLではLEFT()関数を使うことで、文字列の先頭から指定した文字数だけを取り出すことができます。この関数とLENGTH()関数を組み合わせれば、テーブル内のすべての列の値から末尾の2文字を簡単に削除できます。 まずは、動作を確認するためのサンプルテーブルを作成しましょう。 mysql> create table DemoTable -> ( -> Name varchar(10) -> ); Query OK, 0 rows affected (0.71 sec) 次に、INSERT文を使ってレコードを挿入します。 mysql> i