Wygląda na głupie pytanie, a jednak. To może być moje IDE, które mnie wygłupia. Oto kod (ten jest generowany z DbLinq):Jak używać pola boolowskiego w klauzuli where w 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
Jeśli uruchomić tej kwerendy uzyskać trzy wiersze z powrotem, z dwóch logicznych polach zwanych aktywny i publiczny. Dodanie w komentarzu linii nie zwraca żadnych wierszy. Zmiana linii na jedną z poniższych:
pics$.Active = 'TRUE'
pics$.Active = 't'
pics$.Active = boolean(1)
To nie działa. Błędy lub brak wyników. Przeszukałem go i znalazłem tam brak prawdziwych zapytań SQL. I oto jesteśmy.
Tak: jak używać pola boolowskiego w klauzuli where w SQLite?
IDE to administrator SQLite.
Aktualizacja: Cóż, znalazłem odpowiedź. Administrator SQLite pozwoli Ci najwidoczniej tworzyć własne typy; SQL tworzenia, który pobiera generowane wygląda następująco:
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)
Rozwiązaniem dla zapytania jest
AND pics$.Active = 'Y' AND pics$.Public = 'Y'
Prawdziwym problemem tutaj jest, jak pierwsza odpowiadającego podkreślił, nie ma logiczna typu w SQLite . Nie problem, ale coś, o czym należy pamiętać. Używam DbLinq do generowania mojej warstwy danych; może nie powinno pozwalać na mapowanie typów, których SQLite nie obsługuje. Lub powinien mapować wszystkie typy, które nie są natywne do SQLite na typ ciągu.
Musisz być administratorem SQLite, który mnie wygłupia.Ma typ boolowski dostępny podczas budowania tabeli. Ale zapytanie na tym polu zawsze nie daje żadnych wyników. – jcollum
zobacz moją odpowiedź na http://stackoverflow.com/questions/4824687/how-to-include-a-boolean-in-a-sql-lite-where-clause/16880803#16880803 – Straff