Sembra una domanda stupida, eppure. Potrebbe essere il mio IDE che mi sta prendendo in giro. Ecco il codice (questo è generato da DbLinq):Come si usa un campo booleano in una clausola where 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
Se corro questa domanda ho tre file indietro, con due campi booleani chiamati attivo e pubblico. L'aggiunta alla riga commentata non restituisce righe. Modifica della linea in uno dei seguenti:
pics$.Active = 'TRUE'
pics$.Active = 't'
pics$.Active = boolean(1)
Non funziona. Errori o nessun risultato. Ho cercato su google per questo e ho trovato una carenza di query SQL reali là fuori. Ed eccoci qui.
Quindi: come utilizzare un campo booleano in una clausola where in SQLite?
IDE è amministratore SQLite.
Aggiornamento: Bene, ho trovato la risposta. SQLite Administrator ti permetterà di creare i tuoi tipi apparentemente; SQL creare che viene generato assomiglia a questo:
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)
La correzione per la query è
AND pics$.Active = 'Y' AND pics$.Public = 'Y'
Il vero problema qui è, come la prima risposto sottolineato, non v'è alcun tipo booleano in SQLite . Non è un problema, ma qualcosa di cui essere a conoscenza. Sto usando DbLinq per generare il mio livello dati; forse non dovrebbe consentire la mappatura dei tipi che SQLite non supporta. O dovrebbe mappare tutti i tipi che non sono nativi di SQLite per un tipo di stringa.
Deve essere SQLite Administrator che mi sta confondendo.Ha un tipo booleano disponibile quando costruisci il tavolo. Ma l'interrogazione su quel campo non dà mai risultati. – jcollum
vedi la mia risposta in http://stackoverflow.com/questions/4824687/how-to-include-a-boolean-in-a-sql-lite-where-clause/16880803#16880803 – Straff