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

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)

このように、各行の末尾にある単語(QueryDatabasecorrect)が正しく抽出されました。

補足:最初の単語を抽出する場合

逆に、最初の単語を取得したい場合は、第3引数に 1 を指定します。

SELECT SUBSTRING_INDEX(AllWords, ' ', 1) AS FirstWord FROM FirstWordDemo;

また、区切り文字はスペースに限らず、カンマ(,)やハイフン(-)など任意の文字を指定できます。たとえばCSV形式の文字列から最後の項目を取り出す場合にも、同じ考え方で応用可能です。

  1. MySQLでテーブルの最後の10件のレコードを取得する方法

    MySQLでテーブルの末尾にある10行(最新の10件)を取得したい場合は、SELECT文とLIMIT句を組み合わせたサブクエリを利用します。この記事では、実際にテーブルを作成し、データを挿入しながら、最後の10件を取得するクエリの手順を具体的に解説します。 1. サンプルテーブルの作成 まず、動作確認用のテーブルを作成します。 mysql> create table Last10RecordsDemo -> ( -> id int, -> name varchar(100) -> ); Query OK, 0 rows affected

  2. MySQLで列の値から末尾の2文字を削除するクエリの書き方

    MySQLではLEFT()関数を使うことで、文字列の先頭から指定した文字数だけを取り出すことができます。この関数とLENGTH()関数を組み合わせれば、テーブル内のすべての列の値から末尾の2文字を簡単に削除できます。 まずは、動作を確認するためのサンプルテーブルを作成しましょう。 mysql> create table DemoTable -> ( -> Name varchar(10) -> ); Query OK, 0 rows affected (0.71 sec) 次に、INSERT文を使ってレコードを挿入します。 mysql> i