Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

IS NULL versus <> 1 SQL-Bit

Der Grund <> nicht funktioniert, ist, dass SQL NULL behandelt als unbekannt - es weiß nicht, was NULL ist soll bedeuten, also wertet es sowohl = aus und <> auf einem NULL Wert als UNKNOWN (was in einer where-Klausel oder Join-Bedingung als falsch behandelt wird). Weitere Informationen finden Sie hier:Warum wird NULL =NULL im SQL-Server als falsch ausgewertet .

Wenn ein Index vorhanden ist, bedeutet die Verwendung der ISNULL-Funktion, dass der Index nicht verwendet werden kann. Um sicherzustellen, dass die Abfrage den Index verwenden kann, verwenden Sie einfach OR :

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