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

投稿者: | 2024年4月18日

18 views

【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を使ったクエリは正しく動作する。


コメントを残す

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