Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

È NULL rispetto a <> 1 bit SQL

Il motivo <> non funziona è che SQL tratta NULL come sconosciuto - non sa cosa NULL dovrebbe significare, quindi valuta entrambi = e <> su un NULL valore come UNKNOWN (che è considerato falso in una clausola where o in una condizione di join). Per ulteriori informazioni, leggi questo:Perché NULL =NULL restituisce false nel server SQL .

Se è presente un indice, l'utilizzo della funzione ISNULL significherà che l'indice non può essere utilizzato, quindi per assicurarti che la query possa utilizzare l'indice, usa semplicemente OR :

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