Es scheint wie eine dumme Frage, und doch. Es könnte meine IDE sein, die mich vermasselt. Hier ist der Code (dies aus DbLinq erzeugt wird):Wie verwende ich ein boolesches Feld in einer where-Klausel in SQLite?
SELECT pics$.Caption, pics$.Id, pics$.Path, pics$.Public, pics$.Active, portpics$.PortfolioID
FROM main.Pictures pics$
inner join main.PortfolioPictures portpics$ on pics$.Id = portpics$.PictureId
WHERE portpics$.PortfolioId = 1 AND pics$.Id > 0
--AND pics$.Active = 1 AND pics$.Public = 1
ORDER BY pics$.Id
Wenn ich diese Abfrage ausführen ich drei Reihen zurück, mit zwei Boolesche Felder Aktive und Öffentliche genannt. Wenn Sie die auskommentierte Zeile hinzufügen, werden keine Zeilen zurückgegeben. Ändern der Zeile zu einem der folgenden:
pics$.Active = 'TRUE'
pics$.Active = 't'
pics$.Active = boolean(1)
Es funktioniert nicht. Entweder Fehler oder keine Ergebnisse. Ich habe dafür gegoogelt und einen Mangel an tatsächlichen SQL-Abfragen gefunden. Und hier sind wir.
Also: Wie verwende ich ein boolesches Feld in einer Where-Klausel in SQLite?
IDE ist SQLite-Administrator.
Update: Nun, ich fand die Antwort. Mit SQLite Administrator können Sie offensichtlich Ihre eigenen Typen erstellen. die SQL erstellen, die wie folgt aussieht generiert wird: Ist hier
CREATE TABLE [Pictures] ([Id] INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
[Path] VARCHAR(50) UNIQUE NOT NULL,[Caption] varchAR(50) NULL,
[Public] BOOLEAN DEFAULT '0' NOT NULL,[Active] BOOLEAN DEFAULT '1' NOT NULL)
Das Update für die Abfrage ist
AND pics$.Active = 'Y' AND pics$.Public = 'Y'
Die eigentliche Frage, wie der erste Beantworter wies darauf hin, gibt es keinen Typ boolean in SQLite . Kein Problem, aber etwas, dessen man sich bewusst sein muss. Ich verwende DbLinq, um meine Datenschicht zu generieren; Vielleicht sollte es keine Zuordnung von Typen erlauben, die SQLite nicht unterstützt. Oder es sollte alle Typen, die nicht in SQLite enthalten sind, einem String-Typ zuordnen.
Muss SQLite Administrator sein, der mich vermasselt.Beim Erstellen der Tabelle ist ein boolescher Typ verfügbar. Aber die Abfrage dieses Feldes liefert immer keine Ergebnisse. – jcollum
siehe meine Antwort in http://stackoverflow.com/questions/4824687/how-to-include-a-boolean-in-a-sql-lite-where-clause/16880803#16880803 – Straff