Кажется, немой вопрос, и все же. Это может быть моя IDE, которая меня раздражает. Вот код (это генерируется из DbLinq):Как использовать логическое поле в предложении where в 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
Если я запускаю этот запрос я получаю три строки обратно, с двумя булевыми полями называется активным и Public. Добавление в пронумерованную строку не возвращает строк. Изменение линии на любое из следующего:
pics$.Active = 'TRUE'
pics$.Active = 't'
pics$.Active = boolean(1)
Это не работает. Либо ошибки, либо нет результатов. Я искал это для поиска и нашел недостаток в реальных SQL-запросах. И вот мы здесь.
Итак: как использовать логическое поле в предложении where в SQLite?
IDE является администратором SQLite.
Обновление: Ну, я нашел ответ. Администратор SQLite позволит вам самостоятельно создавать свои собственные типы; создавание SQL, который получает генерироваться выглядит так:
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)
Исправление для запроса
AND pics$.Active = 'Y' AND pics$.Public = 'Y'
Реальной проблема здесь в том, как первые ответившем отметил, что нет логического типа в SQLite , Не проблема, а что-то, о чем нужно знать. Я использую DbLinq для создания слоя данных; возможно, это не должно допускать сопоставление типов, которые SQLite не поддерживает. Или он должен отображать все типы, не относящиеся к SQLite, к типу string.
Должен быть администратором SQLite, который меня заводит.Он имеет логический тип, доступный при сборке таблицы. Но запрос на это поле всегда не дает никаких результатов. – jcollum
см. Мой ответ в http://stackoverflow.com/questions/4824687/how-to-include-a-boolean-in-a-sql-lite-where-clause/16880803#16880803 – Straff