Linuxやってみる!

(156)【DB】「,」区切りデータを検索する。

880 views

この記事は最終更新から 790日 が経過しています。

【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-06-17: 0回
  • 2026-06-16: 0回
  • 2026-06-15: 0回
  • 2026-06-14: 0回
  • 2026-06-13: 0回
  • 2026-06-12: 0回
  • 2026-06-11: 0回
  • モバイルバージョンを終了