値がフォーマットで格納されたフィールドを持つ db テーブルがありvalue1,value2,value3,value4
ます。このフィールドに定義された値が含まれているすべての行を見つけたいです。value3
.
このようなフィールドの値を検索するクエリを実行するにはどうすればよいですか?
使用するFIND_IN_SET()
SELECT *
FROM tableName
WHERE FIND_IN_SET('value3', 'comma separated value here') > 0
ソース
MySQL ドキュメントからの説明:
文字列 str が N 個の部分文字列で構成される文字列リスト strlist にある場合、1 から N の範囲の値を返します。文字列リストは、「,」文字で区切られた部分文字列で構成される文字列です。最初の引数が定数文字列で、2 番目の引数が SET 型の列である場合、FIND_IN_SET() 関数はビット演算を使用するように最適化されます。str が strlist にない場合、または strlist が空の文字列の場合は 0 を返します。いずれかの引数が NULL の場合は NULL を返します。
次を使用してこれを行うことができますlike
。
where concat(',', field, ',') like '%,value3,%'