0

在 Android 上,我想使用与此类似的查询:

SELECT docid FROM docs WHERE docs MATCH '("sqlite database" OR "sqlite library") AND linux'

http://www.sqlite.org/fts3.html#section_3

问题是我收到“格式错误的匹配表达式错误”。当我进行更基本的匹配查询时,它可以工作,而且似乎问题可能是因为括号。

当我使用完全相同的语句(表列名除外)时,错误是相同的。

完整的错误信息:

sqlite 返回:错误代码 = 1,msg = statement aborts at 7: 
[SELECT * FROM namedays WHERE names MATCH '("sqlite database" OR "sqlite library") AND linux';]
格式错误的 MATCH 表达式:[("sqlite database"或“sqlite 库”)和 linux],db=/data/data/org.xyz/databases/data

任何的想法?

4

1 回答 1

4

我相信您没有使用 SQLITE_ENABLE_FTS3_PARENTHESIS 选项编译 SQLite。因此,您只能使用Standard Query Syntax,而不是Enhanced Query Syntax

您可以通过执行compile_optionspragma轻松验证这一点。例如,我们看到我的 sqlite3 没有增强的语法:

sqlite> PRAGMA compile_options;
DISABLE_DIRSYNC
ENABLE_COLUMN_METADATA
ENABLE_FTS3
ENABLE_RTREE
ENABLE_UNLOCK_NOTIFY
SECURE_DELETE
TEMP_STORE=1
THREADSAFE=1
于 2012-07-29T13:10:49.920 回答