MySQLのテーブルにカンマ区切りの部分文字列を格納しているフィールドがあり、そのフィールドに特定文字列を含むレコードだけを抽出したい。例えば、このブログのエントリがレコードだとすると、レコードごとに複数のタグを付けることができて、特定のタグが付いているレコードのみを抽出するような場合とか。
- 記事1、”タグ1,タグ2,タグ3″
- 記事2、”タグ2”
- 記事3、”タグ2,タグ3″
カンマ区切りの部分文字列のチェックには FIND_IN_SET を使う
単純に LIKE でタグ文字列との合致をチェックしても可能だけど、MySQLには、まさに部分文字列との合致をチェックするための関数 FIND_IN_SET がある。せっかくあるなら使うに限る。
MySQL :: MySQL 4.1 リファレンスマニュアル :: 6.3.2 文字列関数
http://dev.mysql.com/doc/refman/4.1/ja/string-functions.html
ソースは以下のサイト。
MySQLでカンマ区切りデータの中から検索する便利なFIND_IN_SET関数 | ハチログ
http://www.hachi-log.com/mysql-find-in-set/