No hay ningún tipo de datos Boolean en SQL, BIT
es una especie de truco, pero el principal problema es que, debido al concepto de SQL de NULL
cierto boolean logic es imposible (por ejemplo, ¿cuál sería su declaración de consulta si price
fue NULL
?)
Tenga en cuenta que no estoy diciendo que no son posibles formas de implementar la lógica booleana que "la mayoría" de trabajo (por ejemplo, se podría decir que es TRUE OR NULL
NULL
o lo que sea) sólo que la gente que diseñó el estándar SQL no pudo decidir sobre La única representación verdadera para la lógica booleana (por ejemplo, también podría argumentar que TRUE OR NULL
es TRUE
, ya que TRUE OR <anything>
es TRUE
).
Las expresiones booleanas (=, = <, > =, etc.) sólo son válidos en ciertos lugares (en particular, WHERE
cláusulas y CASE
etiquetas) y no en cualquier otro lugar.
Editar: Se modificó la condición del ejemplo porque aparentemente '1 = 1' como marcador de posición hace que la pregunta sea artificial. –
Dar un ejemplo mínimo de un problema es una buena práctica, normalmente, es bastante obvio que no quieres 'SELECT 1 'porque entonces hubieras escrito exactamente eso. – Amadan
Hasta hace unas versiones, el tipo 'bit' en SQL Server no podía ser anulable. Como una comparación puede dar como resultado VERDADERO, FALSO o DESCONOCIDO, no había forma de representar DESCONOCIDO. Y si no considera que UNKNOWN es lo mismo que NULL, todavía no hay forma de representarlo. – Gabe