カンマ区切りのデータ検索に便利「FIND_IN_SET」MySQLには、とっても便利な「FIND_IN_SET」という関数があります。便利かと言いますと、カンマなどの区切り文字付きで保存されたデータ検索に便利なのです。分からないと思いますので、例を挙げて説明します。社員プロフィールを管理するテーブルの場合、基本的な管理情報は下記のようになると思います。info@cyberbrain.co.jp基本情報は、誰が作ってもこんな感じになると思いますが、スキル情報として習得しているプログラミング言語を保存する場合はどうでしょうか。入力フォームではチェックボックスが最適でしょう。正攻法でやるならば、まず各言語にコードを付けたマスターテーブルを作成し、スキル情報保存テーブルをまた別に作成し、スキルがあるだけ社員idとスキルコードの情報を1対1で保存します。この場合、たかがスキル情報のために、別途2つのテーブルを作成しなければなりません。大掛かりなシステムであれば必要ですが、拡張の予定が無いシステムであればもっと簡単に作りたいと思ってしまいます。そこで考えられるのが、スキルコードが複数ある場合には、カンマなどの区切り文字で保存する方法です。これであれば、同じテーブル内の1カラムで保存できますからね。1,3,5※スキル名はテキストで保存しちゃいますさぁ、ここである条件の場合に問題が発生します。‘%1%’」などで取得できますが、11以降になると、このwhere句では「1と11」の両方を引っ張ってしまいます。‘%1,%’」にしちゃったら、1だけの人が取れないし、仮に1が最後に入っている場合も取得できません。orで色々組み合わせれば何とかなりますが、結局面倒ですよね・・・・もうお気づきだと思いますが、そんな時に便利なのが「FIND_IN_SET」なのです。細かい説明はしません。以下のSQL文で1発解決です。