SQLite улучшенный синтаксис запросов на Android
У меня есть следующий запрос SQLite, который прекрасно работает на моей локальной машине:
SELECT * FROM ftdata WHERE ftdata MATCH 'phrase1:this AND phrase2:that'
Похоже, это не возвращает тот же набор результатов на моем устройстве Android, как на моем рабочем столе. Он возвращает гораздо меньше результатов на Android. Этот запрос возвращает правильные результаты для обоих:
SELECT * FROM ftdata WHERE ftdata MATCH 'phrase1:this phrase2:that'
Однако в идеале я хотел бы объединить запросы AND и OR вместо того, чтобы принудительно использовать AND.
Существуют ли определенные функции расширенного синтаксиса запросов, которые Android не поддерживает? Я использую неправильный синтаксис в первой инстанции?
1 ответ
В разных прошивках Android используются разные версии SQLite, но синтаксис FTS долгое время не менялся.
Ваша проблема в том, что большинство (всех?) Поставщиков Android не поддерживают расширенный синтаксис запросов.
Вы должны ограничиться запросами, которые работают с обоими синтаксисами. Либо выполните PRAGMA compile_options, чтобы проверить, ENABLE_FTS3_PARENTHESIS
установлено.