当我在一个sqlite引擎(android或sqlitebrowser)中执行以下查询时,它抛出一个异常,显示为unable to use function MATCH in the requested context
。
select
a.Body1,
b.Body2
from
tbl1_fts as a,
tbl2_fts as b
where
a.ID = b.ParentID and
(
a.Body1 match('value') or
b.Body2 match('value')
)
- 两张table都有fts。
- 在两个匹配之间使用
And
运算符(而不是OR
)正常运行。
我如何解决这个问题或更改查询以查找具有上述条件的行?
4条答案
按热度按时间kg7wmglp1#
你不能使用或运算,只要改变你的匹配关键字。like SELECT * FROM docs WHERE docs MATCH 'sqlite OR database';
或者你可以使用联合
SELECT docid FROM docs WHERE docs MATCH 'sqlite AND database' UNION SELECT docid FROM docs WHERE docs MATCH 'library';
vohkndzv2#
MATCH作为一个函数有两个参数:
然而,使用MATCH的常用方法是作为一个操作符:
n53p2ov03#
此SQL在FTS 5中为我工作
还应在FTS 3中工作;来源:https://sqlite.org/forum/forumpost?udc=1&name=1a2f2ffdd80cf795
ecbunoof4#
MATCH
必须不带括号使用。与FTS一起使用时,
AND
和OR
运算符必须使用大写字母。