12 Stimmen

Wie man einen Booleschen Wert in eine SQLite WHERE-Klausel einfügt

Ich erhalte keine Ergebnisse. Wie kann ich eine boolesche Bedingung in eine where Klausel in SQLite?

Ich habe Folgendes ausprobiert

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

Nichts. Ich habe sogar versucht, "true" als die whereArgs in einer Abfrage-Funktion.

Wie kann ich es reparieren?

18voto

seppo0010 Punkte 14176

SQLite verfügt nicht über eine separate Boolean-Speicherklasse. Stattdessen werden boolesche Werte als ganze Zahlen 0 (falsch) und 1 (wahr) gespeichert.

Source : SQLite

Das erste klingt dann richtig.

2voto

Straff Punkte 5019
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>

0voto

In SQLite gibt es keinen echten Booleschen Wert. Wenn Sie es mit SQLite Administrator erstellt haben, können Sie es folgendermaßen tun:

Select * from table where col is 'Y'

0voto

Das funktioniert gut "Select * from table where col = 'true'"

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X