Sqlite FTS,在匹配运算符之间使用或

Sqlite FTS, Using OR between match operators

当我在 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')
    )

-两个表都有fts.
- 在两个匹配项之间使用 And 运算符(而不是 OR)运行正常。

如何解决此问题或更改查询以查找符合上述条件的行?

作为函数的 MATCH 有两个参数:

... WHERE match('value', SomeColumn) ...

但是,通常使用 MATCH 的方法是作为运算符:

... WHERE SomeColumn MATCH 'value' ...

您不能使用 OR 操作,只需更改您的匹配关键字即可。 像 SELECT * FROM docs WHERE docs MATCH 'sqlite OR database';

或者你可以使用 union

SELECT docid FROM docs WHERE docs MATCH 'sqlite AND database' 联盟 SELECT docid FROM docs WHERE docs MATCH 'library';

MATCH 必须不带括号使用。

与 FTS 一起使用时,ANDOR 运算符必须大写。