我正在编写一个高级搜索功能,它返回字符串与该表中许多文本列中的一个或多个匹配的记录。
就像是:
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
我可以通过对简单查询结果进行后处理来做到这一点,但我想避免它。有没有一种干净、简单的方法来做到这一点?
干杯