SQLでLIKE文をまとめる

今までwordは1つで複数のフィールドを検索するときは

...WHERE (`field1` LIKE '%word%') OR (`field2` LIKE '%word%') OR...

という感じにしており、冗長な気がしてなりませんでした;


...WHERE (`field1` || `field2`) LIKE '%word%' ...

一度このようにしてやってみたのですが上手くいきませんでした
どちらのfieldも内容があれば上手くいくので最初は勘違いしていましたが、この場合、どちらかのfieldがnullならその行の検索が失敗してしまいます(例え片方のfieldがマッチしていても)


...WHERE (IFNULL(`field1`, '') || IFNULL(`field2`, '')) LIKE '%word%' ...

こうするとfieldがnullの場合に”(空文字列)が返るのでそのまま検索出来ます
まだ多少冗長な気がしないでもないですが、前よりはマシになったと思います

カテゴリー: All   タグ:   この投稿のパーマリンク

コメントをどうぞ

メールアドレスが公開されることはありません。

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>