文字列がこのテーブルの多くのテキスト列の 1 つ以上に一致するレコードを返す高度な検索機能を作成しています。
何かのようなもの:
select * from some_table where (txt_1 like '%foo%') or (txt_2 like '%foo%') or...
または:
select * from some_table where match (txt_1, txt_2, ...) against ('foo')
全文検索ができるかどうか(まだわかりません)。
私の問題は、どの列が実際に「foo」と一致したかをどのように知ることができるかということです。
たとえば、次のレコードがあるとします。
id txt_1 txt_2 txt_3 txt_4
1 'foo' 'bar' 'bar' 'foo'
2 'bar' 'bar' 'bar' 'bar'
3 'bar' 'foo' 'bar' 'bar'
4 'bar' 'bar' 'bar' 'bar'
私のクエリは次のようなものを返す必要があります:
id txt_1_matches txt_2_matches txt_3_matches txt_4_matches
1 1 0 0 1
3 0 1 0 0
単純なクエリ結果の後処理でこれを行うことができますが、避けたいと思います。これを行うクリーンで簡単な方法はありますか?
乾杯