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

时间:2015-08-08 09:01:10

标签: sqlite match fts3

当我在 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运算符正常运行。

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

3 个答案:

答案 0 :(得分:1)

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

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

然而,使用MATCH的常用方法是作为运算符:

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

答案 1 :(得分:1)

您无法使用OR操作,只需更改匹配关键字即可。 喜欢 SELECT * FROM docs WHERE docs MATCH'sqlite OR database';

或者你可以使用联盟

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

答案 2 :(得分:0)

MATCH必须不带括号。

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