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

投稿者: | 2024年4月18日

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回
  • コメントを残す

    メールアドレスが公開されることはありません。 が付いている欄は必須項目です