Załóżmy, że aktywne to „pole logiczne” (małe int, z 0 lub 1)
# Find all active users
select * from users where active
# Find all inactive users
select * from users where NOT active
Innymi słowy, czy operator „NIE” można zastosować bezpośrednio w polu boolowskim?
sql
boolean-expression
Eric
źródło
źródło
Odpowiedzi:
Wartość logiczna w SQL to pole bitowe. Oznacza to 1 lub 0. Prawidłowa składnia to:
select * from users where active = 1 /* All Active Users */
lub
select * from users where active = 0 /* All Inactive Users */
źródło
SELECT “model".* FROM “model" WHERE “boolean_column" = ‘f'
pracowałZ Postgresem możesz używać
select * from users where active
lub
select * from users where active = 't'
Jeśli chcesz użyć wartości całkowitej, musisz traktować ją jako ciąg. Nie możesz użyć wartości całkowitej.
select * from users where active = 1 -- Does not work select * from users where active = '1' -- Works
źródło
where active
,where not active
. Zobacz postgresql.org/docs/8.2/static/functions-logical.htmlMS SQL 2008 może również używać ciągowej wersji true lub false ...
select * from users where active = 'true' -- or -- select * from users where active = 'false'
źródło
W SQL Server zazwyczaj używasz. Nie wiem o innych silnikach baz danych.
select * from users where active = 0
źródło
Osobiście wolę używać char (1) z wartościami „Y” i „N” dla baz danych, które nie mają natywnego typu dla wartości logicznych. Litery są bardziej przyjazne dla użytkownika niż liczby, które zakładają, że czytający będą teraz, że 1 odpowiada prawdzie, a 0 odpowiada fałszowi.
`` Y '' i `` N '' również ładnie odwzorowują, gdy używasz (N) Hibernacji.
źródło
PostgreSQL obsługuje typy logiczne, więc zapytanie SQL działałoby doskonale w PostgreSQL.
źródło
Jeśli używasz SQLite3, uważaj:
Wystarczy tylko „t” lub „f”. Nie 1 lub 0. NIE PRAWDA LUB FAŁSZ.
Właśnie się nauczyłem.
źródło