Поддерживает ли sqflite запрос с помощью CASE WHEN? - PullRequest
0 голосов
/ 08 марта 2019

Я пытаюсь выполнить запрос через sqflite и получаю ошибку ниже:

DatabaseException(no such column: true (code 1): , while compiling: select (case true WHEN true THEN 111 END) xkey1 from tb_path

Вот шаги SQL:

  1. create table tb_path(name text, age text);
  2. db.rawQuery('select (case true WHEN true THEN 111 END) xkey1 from tb_path'); и показанная выше ошибка.

Если я попытаюсь запустить SQL через SqlLite Expert Personal (инструмент SQLITE для Windows-версии), это прекрасно работает.

1 Ответ

0 голосов
/ 08 марта 2019

Когда я пытаюсь выполнить ваши действия в командной строке sqlite (Ubuntu 18.04):

$ select sqlite_version();
3.22.0
$ CREATE TABLE tb_path(from_ text, to_ text);
$ select (case true WHEN true THEN 111 END) xkey1 from tb_path;
Error: no such column: true

Если я попытаюсь с последней бинарной загрузкой (3.27), я не получу ошибку:

$ select sqlite_version();
3.27.2
$ CREATE TABLE tb_path(from_ text, to_ text);
$ select (case true WHEN true THEN 111 END) xkey1 from tb_path;

Так что, возможно, такое утверждение справедливо только для более новой версии sqlite, и поскольку sqflite использует все, что предоставляет платформа iOS / Android, оно может еще не поддерживаться (см. Хороший список поставляемых версий sqlite для Android здесь: Версия SQLite используется в Android? )

...