Frage Wie man einen boolean in eine sql lite where-Klausel einfügt


Das macht mich verrückt. Ich fühle mich wie ich alles versucht habe und ich bekomme keine Ergebnisse. Wie kann ich eine boolesche Bedingung in eine where-Klausel in sql lite einfügen?

Ich habe diese 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 whereArgs in eine Abfragefunktion einzufügen.

Hat jemand das schon mal gemacht?


9
2018-01-28 03:55


Ursprung


Antworten:


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

Quelle: SQLite

Der erste klingt dann richtig.


12
2018-01-28 04:02



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>

1
2018-06-02 07:41



In SQLIte gibt es keinen echten booleschen Wert. Wenn Sie SQLite Administrator erstellt haben, gehen Sie wie folgt vor:

Select * from table where col is 'Y'

0
2017-10-19 01:03



Das funktioniert gut "Wählen Sie * aus der Tabelle, wobei col = 'wahr'"


-1
2018-03-01 13:23