sql >> Base de Datos >  >> RDS >> Sqlserver

ES NULL frente a <> 1 bit SQL

La razón <> no funciona es que SQL trata NULL como desconocido - no sabe qué NULL se supone que significa, por lo que evalúa tanto = y <> en un NULL valor como UNKNOWN (que se trata como falso en una cláusula where o condición de unión). Para obtener más información, lea esto:¿Por qué NULL =NULL se evalúa como falso en el servidor SQL .

Si hay un índice en él, usar la función ISNULL significará que el índice no se puede usar, por lo que para asegurarse de que la consulta pueda usar el índice, simplemente use OR :

SELECT * 
FROM TableName
WHERE
   bit_column_value IS NULL OR bit_column_value = 0