90 votes

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

Supposons que actif 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 termes, l'opérateur "NOT" peut-il être appliqué directement sur le champ booléen ?

98voto

Jose Basilio Points 29215

Un booléen dans SQL est un champ binaire. Cela signifie soit 1 soit 0. La syntaxe correcte est :

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

ou

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

30voto

Luc M Points 4950

Avec Postgres, vous pouvez utiliser

select * from users where active

ou

select * from users where active = 't'

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

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

select * from users where active = '1' -- Works 

14voto

Scott Ivey Points 19577

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

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

12voto

Jonathan Allen Points 23540

Dans SQL Server, vous utiliseriez généralement. Je ne sais pas pour les autres moteurs de base de données.

select * from users where active = 0

3voto

stili Points 598

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 booléen. Les lettres sont plus conviviales que les chiffres qui supposent que ceux qui les lisent vont maintenant que 1 correspond à vrai et 0 correspond à faux.

'Y' et 'N'sont également joliment cartographiés lors de l'utilisation de (N)Hibernate.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X