Supongamos activo es un "campo booleano" (pequeña int, con 0 o 1)¿Es esta la forma correcta de hacer una prueba booleana en SQL?
# Find all active users
select * from users where active
# Find all inactive users
select * from users where NOT active
En palabras, ¿puede la "NOT" operador puede aplicar directamente en el campo booleano?
Sí, como se publicó, los campos booleanos suelen escribirse 'bit', no 'int' – Davis
Supongo que realmente buscas un código atractivo, ya que sin duda estarías al tanto de que "active = 0" es un posible solución. En la elección entre "NO activo" y "activo = 0", no me molestaría, si necesita que se lo explique, agregue un comentario. (En caso de que alguien que trabaje con el código en el futuro no entienda la relación verdadero/falso <-> 1/0, tal vez ese alguien no debería tocar su código, por cierto ...) –
@Eric: En SQL, un predicado necesita producir un resultado booleano. Un "donde esté activo" no produce dicho resultado, porque incluso si 'activo' era un tipo de datos BIT - un BIT no es un valor booleano, es un valor entero con un rango de 0..1. Entonces * debes * hacer una comparación de algún tipo para producir un booleano. "donde NO (activo = 1)" funcionaría, pero no "donde NO está activo". – Tomalak