Оператор sqlite match

На Android я хотел бы использовать запрос, подобный этому:

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

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

Проблема в том, что я получил "неправильное выражение выражения". Когда я делаю более простой запрос на совпадение, он работает, и кажется, что проблема может быть из-за скобок.

Когда я использую точно такой же оператор (кроме таблицы имя столбца), ошибка та же.

Полное сообщение об ошибке:

sqlite вернул: код ошибки = 1, msg = оператор прерывается на 7: 
[SELECT * FROM namedays ГДЕ имена MATCH '("база данных sqlite" ИЛИ "библиотека sqlite") И linux';]
искаженное выражение MATCH: [("база данных sqlite" ИЛИ "библиотека sqlite") И linux], db=/data/data/org.xyz/database / data

Любая идея?

1 ответ

Решение

Я считаю, что у вас нет SQLite, скомпилированного с параметром SQLITE_ENABLE_FTS3_PARENTHESIS. Таким образом, вы можете использовать только стандартный синтаксис запроса, а не расширенный синтаксис запроса

Вы можете легко проверить это, выполнив compile_options прагма Например, мы видим, что мой sqlite3 не имеет расширенного синтаксиса:

sqlite> PRAGMA compile_options;
DISABLE_DIRSYNC
ENABLE_COLUMN_METADATA
ENABLE_FTS3
ENABLE_RTREE
ENABLE_UNLOCK_NOTIFY
SECURE_DELETE
TEMP_STORE=1
THREADSAFE=1
Другие вопросы по тегам