文字が含まれる場合は、この関数が正しく動作しません。全データpostテーブルに以下のようにデータが登録されています。本ブログ最後にテスト用のデータ(SQL文)を掲載しておきますので、テストしたい方はそちらのデータをご利用ください。nameカラムにテスト名などが入っており、tagカラムに教科(国語・数学など)がカンマ区切りで入力されています。今回はこのtagカラムのカンマ区切りデータに対し検索・抽出を行います。1つのキーワードで抽出カンマ区切りデータの中に「国語」という文字が入っているレコードを抽出します。FIND_IN_SETの書式は以下のようになっています。FIND_IN_SET('国語',tag)上記のようなSQL文を実行すると、tagカラムの中に「国語」という文字が含まれるレコードが抽出されます。複数のキーワードでOR検索tagカラムの中に「国語」または「算数」が含まれるデータを抽出します。FIND_IN_SET('算数',tag)「国語」または「算数」を含むレコードがちゃんと抽出されていますね。複数のキーワードでAND検索tagカラムの中に「国語」と「算数」が含まれるレコードを抽出します。FIND_IN_SET('算数',tag)こちらも希望通りのレコードが抽出されました。ひとつのカラム(フィールド)に複数のキーワードを登録しておいて検索したい、という場面は多いのですが、この関数を知っておくと短時間で機能を実装することができます。レコード数が多いと検索が遅くなるなどのマイナス面もありますが、規模の小さいシステムにでは力を発揮してくれます。MySQLデータテスト用にご利用ください。