672 views
この記事は最終更新から 627日 が経過しています。
【1】やりたいこと
例えば、カンマ区切りで複数の値を併記するテキスト形式ののカラム plu があるとする。
3,8,11,524
このときに、SELECTコマンドで pluの中に 8が存在するレコードを取得したい場合、どう書くか?
【2】やってみる
(1) 検索対象の値が 1種類の場合
FIND_IN_SET( {値}, {カラム名} ) で検索対象の値を指定すればよい。
SELECT * FROM {テーブル名} WHERE FIND_IN_SET('8',`plu`);
(2) 検索対象の値が 2種類以上の場合
FIND_IN_SET( {値1,値2}, {カラム名} ) とは書けない。
FIND_IN_SETを AND もしくは OR で繋げて複数書く必要がある。
SELECT * FROM {テーブル名} WHERE FIND_IN_SET('8',`plu`) OR FIND_IN_SET('10',`plu`);
【3】その他
・カラムが保持する値が一つ、すなわちカラムの値がカンマ区切り文字列でない場合は?
→ 上記の FIND_IN_SETを使ったクエリは正しく動作する。
アクセス数(直近7日): ※試験運用中、BOT除外簡易実装済2026-01-05: 1回 2026-01-04: 0回 2026-01-03: 0回 2026-01-02: 0回 2026-01-01: 0回 2025-12-31: 0回 2025-12-30: 0回