Cómo incluir un booleano en una cláusula sql lite where
Esto me está volviendo loca. Siento que lo he intentado todo y no obtengo resultados. ¿Cómo puedo incluir un condicional booleano en una cláusula where en sql lite?
He intentado estos
- Sqlite excepción en crear sentencia de tabla
- SQLCipher para Android: icudt46l.zip realmente necesario?
- ¿Qué hacer con Cursor después de una consulta SQLite?
- Cómo probar la actualización de la base de datos sqlite antes de cargar la nueva versión de mi aplicación en la tienda de juegos en android
- ¿La reinstalación de la aplicación suprime SQLiteDatabase o SharedPreferences?
"Select * from table where col = 1" "Select * from table where col = '1'" "Select * from table where col = true" "Select * from table where col = 'true'" "Select * from table where col = 'True'" "Select * from table where col is True"
Nada. Incluso intenté incluir "true" como el whereArgs en una función de consulta.
¿Alguien hizo esto antes?
- Android - ¿Existe la base de datos SQLite?
- Base de datos de Android más rápida
- Comprobación de consultas de Sqlite - menor y mayor que
- SQLiteStatement ejecuta un SELECT / INSERT / DELETE / UPDATE
- Android: la ejecución de SQLiteStatement (inserción múltiple) falla con API Nivel 14
- Java.lang.StringIndexOutOfBoundsException: index = 0 length = 0 en obtener la base de datos sqlite
- Consulta de suma en sqlite en android
- ¿Cómo se obtiene el tipo de un cursor?
SQLite no tiene una clase de almacenamiento booleana separada. En su lugar, los valores booleanos se almacenan como enteros 0 (false) y 1 (true).
Fuente: SQLite
El primero entonces suena correcto.
SQLite version 3.7.4 Enter ".help" for instructions Enter SQL statements terminated with a ";" sqlite> CREATE TABLE "stack_test" ("id" INTEGER, "bool_col" boolean); sqlite> insert into stack_test values(1,'t'); sqlite> insert into stack_test values(2,'f'); sqlite> insert into stack_test values(3,'1'); sqlite> insert into stack_test values(4,'0'); sqlite> insert into stack_test values(5,1); sqlite> insert into stack_test values(6,0); sqlite> insert into stack_test values(7,banana); Error: no such column: banana sqlite> insert into stack_test values(7,'banana'); sqlite> .headers on sqlite> select * from stack_test; id|bool_col 1|t 2|f 3|1 4|0 5|1 6|0 7|banana sqlite> select * from stack_test where bool_col=t; Error: no such column: t sqlite> select * from stack_test where bool_col='t'; id|bool_col 1|t sqlite> select * from stack_test where bool_col=0; id|bool_col 4|0 6|0 sqlite> select * from stack_test where bool_col=1; id|bool_col 3|1 5|1 sqlite> select * from stack_test where bool_col=true; Error: no such column: true sqlite> select * from stack_test where bool_col=banana; Error: no such column: banana sqlite> select * from stack_test where bool_col='banana'; id|bool_col 7|banana sqlite> sqlite> .schema stack_test CREATE TABLE "stack_test" ("id" INTEGER, "bool_col" boolean); sqlite>
No hay verdadero booleano en SQLIte. Si ha creado con SQLite Administrator, aquí es cómo hacerlo:
Select * from table where col is 'Y'
Esto funciona bien "Select * from table where col = 'true'"