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

Hodnoty NULL uvnitř klauzule NOT IN

Dotaz A je stejný jako:

select 'true' where 3 = 1 or 3 = 2 or 3 = 3 or 3 = null

Protože 3 = 3 je pravda, dostanete výsledek.

Dotaz B je stejný jako:

select 'true' where 3 <> 1 and 3 <> 2 and 3 <> null

Když ansi_nulls je zapnuto, 3 <> null je NEZNÁMÝ, takže predikát se vyhodnotí jako NEZNÁMÝ a nezískáte žádné řádky.

Když ansi_nulls je vypnuto, 3 <> null je pravda, takže predikát se vyhodnotí jako pravdivý a dostanete řádek.



  1. Neshoda verze Postgresql 9.2 pg_dump

  2. Rekurzivní dotaz v Oracle

  3. 9 osvědčených postupů pro psaní SQL dotazů

  4. NASTAVIT NÁZVY utf8 v MySQL?