sql >> Databáze >  >> RDS >> Sqlserver

JE NULL oproti <> 1 bitu SQL

Důvod <> nefunguje je, že SQL zachází s NULL jako neznámý - neví co NULL má znamenat, takže vyhodnotí obě = a <> na NULL hodnotu jako UNKNOWN (což je považováno za nepravdivé v klauzuli where nebo podmínce spojení). Pro více informací si přečtěte toto:Proč se hodnota NULL =NULL na serveru SQL vyhodnotí jako nepravda .

Pokud je na něm index, použití funkce ISNULL bude znamenat, že index nelze použít, takže pro zajištění, že dotaz může index používat, stačí použít OR :

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


  1. Získejte den v roce z data v SQL Server (T-SQL)

  2. Vyberte konkrétní sloupec z konkrétního řádku pomocí starého mysql_* API

  3. mySQL CAST a ASC / DESC

  4. Získejte rozdíl v letech mezi dvěma daty v MySQL jako celé číslo