我正在学习如何在SQlite中使用FTS4并尝试翻译这样的内容:
SELECT * FROM table
WHERE (postal_code LIKE q1 OR place_name LIKE q1) AND (address LIKE q2)
与普通表完美配合,类似于:
SELECT * FROM table
WHERE table MATCH '(postal_code: q1 OR place_name: q1) AND (address: q2)'
不能使用转换为VIRTUAL的同一个表。使用fts4 ...
使用“:”is working搜索特定列中的匹配项,但如何将其与OR和AND结合使用?
背景 - 我尝试使用灵活的查询,其中q1可以是两者之一:邮政编码或地名,q2必须是地址。
修改
这是我到目前为止(部分)工作的原因
SELECT * FROM table WHERE table MATCH ('postal_code:q1 OR place_name:q1')
INTERSECT
SELECT * FROM table WHERE table MATCH ('address:q2');
(建立在@CL的this帖子上)
这里的第一个问题是带空格的单词 - 如果我搜索类似
的内容...MATCH ('postal_code:"new haven*" OR place_name:"new_haven*"')
然后我有“畸形的MATCH表达” 第二个问题是我有空查询,比如
...MATCH ('*')
然后我什么都没得到