質問: 複数カラムに対するlike文の最適化 column1~column3のデータに文字検索をしたいのですが、 下記のような不恰好なsqlしか思いつきません、、。 select * from tb where ( column1 like '%word1%' or column2 like '%word1%' or column3 like '%word1%' ) and ( column1 like '%word2%' or column2 like '%word2%' or column3 like '%word2%' ) and ( column1 like '%word3%' or column2 like '%word3%' or column3 like '%word3%' ) 試しに、 select * from tb where ( ( column1 or column2 or column3) like '%word1%' ) and ( ( column1 or column2 or column3) like '%word2%' ) and ( ( column1 or column2 or column3) like '%word3%' ) と考えたのですが、これですと検索結果0件になってしまいます。 もっとスマートなsql文がありましたら、ご教授頂きたいです。
回答: 文字列を連結して、あたかも一つの列であるように見立てた上でlikeとする。 ただし、3つのカラムのうちの一つでもnullだと全体がnullになる。 参考urlの5番目に対策あり。 参考url:http://www.orangesoft.co.jp/rdb/rdb_memo_strcat.html