MySQL はかゆいところに手が届きます。
例えば、「総合成績」というテーブルに「教科」というカラムがあったとします。その「教科」カラムには “英語,数学,理科,世界史,日本史,現代文,古文” などとカンマ区切りのデータが格納されていたとします。「正規化しろ」と言いたくなるかもしれませんが、見やすさ、扱いやすさの面から1つの表にしておきたいケースは意外と多いものです。こんなデータを簡単に検索する関数が MySQL には用意されていました。

SELECT * FROM 総合成績 WHERE FIND_IN_SET(‘数学’, 教科)

この「教科」カラムに対する FIND_IN_SET は、カンマを区切り文字として複数の要素が「教科」カラムに格納されていると判断します。そしてその中から今回の例では カラムの値に “数学” が含まれているかという条件で「総合成績」テーブルを検索します。

いちいち、前後に区切り文字を補って LIKE検索 の様な実装が不要で、SQL分がすっきりしますしリスクも減ります。


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です