[MySQL] カンマ区切りの部分文字列を検索するには

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/