2015年07月13日

カンマ区切りのデータを検索する時に便利な「FIND_IN_SET()」

   
LIKE演算子であいまい検索を行ったりする場合に、引っかかってほしくないデータまで引っかかってしまう場合があります。例えばフォームからチェックボックスを付けた値だけを受け取る場合、カンマ区切りで数値を文字列として保存する方法がよく用いられますが、このような場合に便利なのが「FIND_IN_SET()」です。

LIKEを使用したあいまい検索

例えば下記のようなテーブルがあるとします。

【テーブル名「sample_form」】
form_idkind
11,2,3,4,5
212
32,5
422,13
5265


ここから「2」だけを一致させたい場合に、このようなSQL文を書いたとします。

select * from sample_form where kind LIKE '%2%';

このSQL文だと、全ての行が引っかかってしまいますので、意図した結果になりません。

IND_IN_SET()を使用した例

そこで、SQL文を下記の通り書き換えます。

select * from sample_form where FIND_IN_SET('2', kind);

こうする事で、カンマ区切りでの完全一致で検索する事になりますので、form_idが1と3のデータのみ抽出できるようになります。

以上、カンマ区切りのデータを扱うときに便利なMySQL関数「FIND_IN_SET()」でした。


posted by Liang Zhaohong at 11:25 | Comment(0) | TrackBack(0) | MySQL | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバック
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。