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

【MySQL】SUBSTRING_INDEXでカンマ区切り文字列から指定位置の値を取得する方法

カンマ区切りの文字列から、指定した位置にある単一の値を取り出したい場合は、SUBSTRING_INDEX() 関数を使用します。この関数をネスト(入れ子)して呼び出すことで、任意の位置の要素を簡単に抽出できます。

1. サンプルテーブルの作成

まず、カンマ区切りの文字列を格納するテーブルを作成します。

mysql> create table DemoTable1615
    -> (
    -> ListOfSubject text
    -> );
Query OK, 0 rows affected (0.81 sec)

2. レコードの挿入

INSERT文を使って、カンマ区切りの科目リストを登録します。

mysql> insert into DemoTable1615 values('Python,Java,MySQL,MongoDB,C,C++,ASP.net');
Query OK, 1 row affected (0.19 sec)

3. 登録データの確認

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

mysql> select * from DemoTable1615;

実行すると、次のような結果が表示されます。

+-----------------------------------------+
| ListOfSubject                           |
+-----------------------------------------+
| Python,Java,MySQL,MongoDB,C,C++,ASP.net |
+-----------------------------------------+
1 row in set (0.00 sec)

4. 指定位置の値を取得するクエリ

ここでは例として、4番目の位置にある「MongoDB」を取得します。SUBSTRING_INDEX() を二重に使用するのがポイントです。

mysql> select substring_index(substring_index(ListOfSubject, ',', 4), ',', -1) as Position from DemoTable1615;

実行結果は以下の通りです。

+----------+
| Position |
+----------+
| MongoDB  |
+----------+
1 row in set (0.00 sec)

仕組みの解説

このクエリがどのように動作するのか、順を追って説明します。

  • 内側の SUBSTRING_INDEX(ListOfSubject, ',', 4):区切り文字「,」が4回現れるまでの部分文字列、つまり先頭から4番目の要素まで(Python,Java,MySQL,MongoDB)を返します。
  • 外側の SUBSTRING_INDEX(..., ',', -1):その結果に対して、末尾から数えて最初の区切り文字より後ろの部分、つまり最後の要素(MongoDB)だけを取り出します。

このように、正の数を指定すると左(先頭)から、負の数を指定すると右(末尾)から数える仕組みを利用することで、カンマ区切りの文字列から任意の位置の値を柔軟に取得できます。N番目の要素が欲しい場合は、内側の引数を N に変更するだけで対応可能です。

  1. MySQLで特定の行から単一の値だけを取得する方法(SELECT INTOの使い方)

    MySQLで特定の条件に一致する行から、単一の値だけを変数に取得したい場合は、SELECT ... INTO 変数構文とWHERE句を組み合わせて使用します。この記事では、実際のテーブル作成から値の取得までの手順を順番に解説します。 1. サンプルテーブルを作成する まずは動作確認用のテーブルを作成しましょう。学生ID・氏名・点数を持つシンプルなテーブルを定義します。 mysql> create table DemoTable1896 ( StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY, StudentName

  2. MySQLでテーブルから特定の行を抽出するクエリの書き方

    MySQLでは、WHERE句とORDER BY、LIMITを組み合わせることで、テーブルから条件に合致する特定の行だけを効率的に取得できます。本記事では、実際にサンプルテーブルを作成し、特定の行を抽出するクエリの実行手順をわかりやすく解説します。 1. サンプルテーブルの作成 まず、CREATE TABLE文を使ってサンプル用のテーブルを作成します。ここでは「Section(組)」と「StudentName(生徒名)」という2つのカラムを持つテーブルを用意しました。 mysql> create table DemoTable1972 ( Section char(1),