Est-ce la bonne façon de faire un test booléen en SQL?

Supposons que active est un “champ booléen” (minuscule int, avec 0 ou 1)

# Find all active users select * from users where active # Find all inactive users select * from users where NOT active 

En d’autres termes, l’opérateur “NOT” peut-il être appliqué directement sur le champ booléen?

Un booléen en SQL est un champ de bits. Cela signifie soit 1 ou 0. La syntaxe correcte est la suivante:

 select * from users where active = 1 /* All Active Users */ 

ou

 select * from users where active = 0 /* All Inactive Users */ 

Avec Postgres, vous pouvez utiliser

 select * from users where active 

ou

 select * from users where active = 't' 

Si vous voulez utiliser une valeur entière, vous devez la considérer comme une chaîne. Vous ne pouvez pas utiliser une valeur entière.

 select * from users where active = 1 -- Does not work select * from users where active = '1' -- Works 

MS SQL 2008 peut également utiliser la version de chaîne true ou false …

 select * from users where active = 'true' -- or -- select * from users where active = 'false' 

Dans SQL Server, vous utiliseriez généralement. Je ne connais pas d’autres moteurs de firebase database.

 select * from users where active = 0 

Personnellement, je préfère utiliser char (1) avec les valeurs ‘Y’ et ‘N’ pour les bases de données qui n’ont pas de type natif pour les booléens. Les lettres sont plus frivoles pour l’utilisateur que les nombres qui supposent que ceux qui le liront auront maintenant 1 correspond à vrai et 0 correspond à faux.

‘Y’ et ‘N’ sont également bien mappés lors de l’utilisation d’Hibernation (N).

PostgreSQL supporte les types booléens, donc votre requête SQL fonctionnerait parfaitement dans PostgreSQL.

Si vous utilisez SQLite3 méfiez-vous:

Il ne faut que ‘t’ ou ‘f’. Pas 1 ou 0. Non VRAI OU FAUX.

Juste appris à la dure.