Parece una pregunta tonta, y sin embargo. Podría ser mi IDE el que me está fastidiando. Aquí está el código (esto se genera a partir de DbLinq):¿Cómo uso un campo booleano en una cláusula where en 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
Si me quedo esta consulta consigo tres filas más atrás, con dos campos booleanos llamadas activa y pública. Agregar en la línea comentada no devuelve filas. Cambiar la línea a cualquiera de los siguientes:
pics$.Active = 'TRUE'
pics$.Active = 't'
pics$.Active = boolean(1)
No funciona. O errores o sin resultados. Busqué en Google esto y encontré la escasez de consultas SQL reales. Y aquí estamos.
Entonces, ¿cómo utilizo un campo booleano en una cláusula where en SQLite?
IDE es Administrador de SQLite.
Actualización: Bueno, encontré la respuesta. Administrador de SQLite le permitirá inventar sus propios tipos aparentemente; SQL crear que se genera el siguiente aspecto:
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 corrección para la consulta es
AND pics$.Active = 'Y' AND pics$.Public = 'Y'
La verdadera cuestión aquí es, como el primer respondedor señaló, no hay ningún tipo booleano en SQLite . No es un problema, pero es algo a tener en cuenta. Estoy usando DbLinq para generar mi capa de datos; tal vez no debería permitir el mapeo de tipos que SQLite no admite. O debe asignar todos los tipos que no son nativos de SQLite a un tipo de cadena.
Debe ser el administrador SQLite que me está engañando.Tiene un tipo booleano disponible cuando construyes la tabla. Pero consultar en ese campo siempre no da resultados. – jcollum
ver mi respuesta en http://stackoverflow.com/questions/4824687/how-to-include-a-boolean-in-a-sql-lite-where-clause/16880803#16880803 – Straff