MySQLのFIND_IN_SET関数の使い方を解説!

1つのカラムの中にカンマ区切りでデータが格納されているケースがあります。フォームのセレクトボックスで複数の選択肢が選択されたデータを格納する場合などに多いです。このようなカンマ区切りのデータをFIND_IN_SET関数を使って抽出する方法を解説していきます。

コンテンツ [表示]

  1. 1MySQLのFIND_IN_SET関数とは?
  2. 2MySQLのFIND_IN_SET関数の使い方

MySQLのFIND_IN_SET関数とは?

皆さんはMySQLのFIND_IN_SET関数をご存じでしょうか?

FIND_IN_SET関数はMySQLの文字列関数の1つで、1つのカラムにカンマ区切りで格納されているデータを検索して抽出することができる関数です。

基本的に1つのカラムにカンマ区切りで複数の値を格納するよりは複数のレコードに分けるのがベターかと思いますが、いざというときにFIND_IN_SET関数は使えると便利ですので、使い方を紹介していきたいと思います。

MySQLのFIND_IN_SET関数の使い方

それではFIND_IN_SET関数の使い方を紹介していきます。

下記のようなテーブルとデータを用意しました。

mysql> DESC fruits;
+-------+-------------+------+-----+---------+----------------+
| Field | Type        | Null | Key | Default | Extra          |
+-------+-------------+------+-----+---------+----------------+
| id    | int(11)     | NO   | PRI | NULL    | auto_increment |
| fruit | varchar(50) | YES  |     | NULL    |                |
+-------+-------------+------+-----+---------+----------------+
2 rows in set (0.00 sec)

mysql> SELECT * FROM fruits;
+----+-------------+
| id | fruit       |
+----+-------------+
|  1 | apple       |
|  2 | orange      |
|  3 | lemon       |
|  4 | apple,lemon |
+----+-------------+
4 rows in set (0.00 sec)

fruitカラムにカンマ区切りで値が格納されているデータが存在します。

この中から、例えばappleという文字が入っているデータを抽出する際にFIND_IN_SET関数を使うこと簡単に行うことが出来ます。

まずはFIND_IN_SET関数の構文を紹介します。

FIND_IN_SETの構文

FIND_IN_SET(str, strlist)

カンマ区切りで構成されたN部分文字列strlist内にstrがある場合、1からNまでの範囲内の値を返してくれます。strlist内にstrがない場合は0を返します。

レコードを抽出する場合のFIND_IN_SET関数の使い方はWHERE句の後で使用し、第一引数に検索した文字列の値を指定して第二引数には検索対象のカラムを指定します。

mysql> SELECT * FROM fruits WHERE FIND_IN_SET('apple', fruit);
+----+-------------+
| id | fruit       |
+----+-------------+
|  1 | apple       |
|  4 | apple,lemon |
+----+-------------+
2 rows in set (0.01 sec)

fruitカラムがappleid1のレコードのみならず、appleを含むid4のレコードも取得することが出来ましたね。

Qumeru[クメル]ではプログラミング学習が出来るカリキュラムを7月31日までの期間限定で無料で提供しています。

無料登録することで、すぐにプログラミング学習を始められます。ぜひカリキュラムをお試し下さい!

関連記事

【期間限定】全カリキュラム無料で提供中!

Qumeru[クメル]ではプログラミング学習の全カリキュラムを7月31日まで期間限定で無料で提供しています。

無料登録することで、すぐにプログラミング学習を始められます。ぜひお試し下さい!

目次

みぎさん
ライター

みぎさん

大阪府の現役システムエンジニアです。WEB制作やWEB開発、ライティングなど幅広く活動しております。 【言語/FW】HTML,CSS,Sass,JavaScript,jQuery,Vue.js,PHP,WordPress,Laravel,Java