SQL道場 文字列関数 FIND_IN_SET関数
カンマで区切られた文字の中から文字を探すFIND_IN_SET関数について記載しています。
対応データベース:MySQL
FIND_IN_SET関数の文法
SELECT FIND_IN_SET(探す文字,文字列) FROM テーブル
引数 | 探す文字 | 文字列型 |
文字列 | 文字列型 | |
返値 | 文字列型 変換後の文字列 |
FIND_IN_SET関数はカンマで区切られた文字列内から文字を探し、何番目に見つかったかを数値で返します。見つからなかった場合は0(ゼロ)を返します。
実行例
MySQLの実行例
文字がカンマで区切られた文字列内の何番目にあるかを探します。
/* カンマで区切られた文字の中から文字を探すサンプル */
SELECT FIND_IN_SET('D','A,B,C,D,E,F');

カンマ区切りでセットされているレコードを検索する方法
カンマ区切りデータの中に「1」という文字が入っているレコードを抽出します。その場合はFIND_IN_SET関数を使用することで抽出することができます。テーブルにCSVファイルのデータを格納している場合の検索に使用することができます。
使用するテーブル
No | CSVデータ |
---|---|
1 | abc,def,g |
2 | 1,2,3 |
3 | 123,456,789 |
4 | 1,12,15 |
5 | apple,google |
6 | google,msn |
1つのキーワード検索
/* カンマ区切りでセットされているレコードを検索する方法 */
SELECT no,csv FROM testdb.WORK where find_in_set(1,csv);

ORを使ったキーワード検索
/* カンマ区切りでセットされているレコードを2つ以上のキーワードで検索する方法 */
SELECT no,csv FROM testdb.WORK where find_in_set(1,csv) or find_in_set('apple',csv);

ANDを使ったキーワード検索
/* カンマ区切りでセットされているレコードをANDを使った検索する方法 */
SELECT no,csv FROM testdb.WORK where find_in_set(1,csv) AND find_in_set(2,csv);
