2011-01-28 12 views
9

Questo mi sta facendo impazzire. Mi sento come se avessi provato tutto e non ho ottenuto risultati. Come posso includere un condizionale booleano in una clausola where in sql lite?Come includere un booleano in un lite sql dove clausola

Ho provato questi

"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" 

Niente. Ho persino provato a includere "true" come whereArgs in una funzione di query.

Qualcuno ha già fatto questo?

+1

'... dove (col) '? –

risposta

11
SQLite non ha una classe di archiviazione booleana separata. Invece, i valori booleani vengono memorizzati come numeri interi 0 (falso) e 1 (vero).

Fonte: SQLite

Il primo suona poi corretta.

+0

Ho trovato le stesse informazioni un'ora fa. Sto contando le righe in cui val è sia 0 che 1, ed è sempre 0. Potrebbe essere qualcos'altro che sta succedendo Non vedo. Mi chiedo solo se qualcuno l'ha già fatto prima. –

+1

Potrebbe non essere visualizzato il valore corretto. Prova 'sqlite3 .dump' per verificare il valore reale del campo. – seppo0010

0

Non c'è un vero booleano in SQLIte. se è stato creato utilizzando Amministrazione SQLite, Ecco come si fa:

Select * from table where col is 'Y' 
-1

Questo funziona bene "select * from tabella in cui col = 'true'"

1
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>