Suponga que activo es un "campo booleano" (pequeño int, con 0 o 1)
# Find all active users
select * from users where active
# Find all inactive users
select * from users where NOT active
En palabras, ¿se puede aplicar el operador "NO" directamente en el campo booleano?
sql
boolean-expression
Eric
fuente
fuente
Respuestas:
Un booleano en SQL es un campo de bits. Esto significa 1 o 0. La sintaxis correcta es:
select * from users where active = 1 /* All Active Users */
o
select * from users where active = 0 /* All Inactive Users */
fuente
SELECT “model".* FROM “model" WHERE “boolean_column" = ‘f'
funcionóCon Postgres, puede usar
select * from users where active
o
select * from users where active = 't'
Si desea utilizar un valor entero, debe considerarlo como una cadena. No puede usar un valor entero.
select * from users where active = 1 -- Does not work select * from users where active = '1' -- Works
fuente
where active
,where not active
. Ver postgresql.org/docs/8.2/static/functions-logical.htmlMS SQL 2008 también puede usar la versión de cadena de verdadero o falso ...
select * from users where active = 'true' -- or -- select * from users where active = 'false'
fuente
En SQL Server, generalmente usaría. No conozco otros motores de bases de datos.
select * from users where active = 0
fuente
Personalmente prefiero usar char (1) con valores 'Y' y 'N' para bases de datos que no tienen un tipo nativo para booleano. Las letras son más fáciles de usar que los números que asumen que aquellos que las lean ahora verán que 1 corresponde a verdadero y 0 corresponde a falso.
'Y' y 'N' también se mapean muy bien cuando se usa (N) Hibernate.
fuente
PostgreSQL admite tipos booleanos, por lo que su consulta SQL funcionaría perfectamente en PostgreSQL.
fuente
Si usa SQLite3, tenga cuidado:
Solo se necesita 't' o 'f'. Ni 1 ni 0. Ni VERDADERO NI FALSO.
Acabo de aprender por las malas.
fuente