Sono sorpreso di vedere che IS NULL e = NULL stanno dando risultati diversi in una query di selezione. Qual è la differenza tra loro? Quando usare cosa. Sarei felice se mi spiegassi in dettaglio.C'è qualche differenza tra IS NULL e = NULL
risposta
= NULL
è sempre unknown
(questo è un pezzo di logica di stato 3), ma WHERE
clausola considera come false
e gocce dal set di risultati. Così, per NULL
si dovrebbe usare IS NULL
motivi sono descritte qui: Why does NULL = NULL evaluate to false in SQL server
Non è 'falso'. È "sconosciuto". Se fosse falso allora 'NOT (X = NULL)' sarebbe 'true'. Questo non è il caso. SQL utilizza la logica di valore 3. –
@ Martin Smith conosco la logica a 3 stati. ma la clausola 'WHERE' tratta' unknown' come 'false' e rimuove dal set di risultati. – Andrey
Per aggiungere alle risposte esistenti, dipende se si dispone di ANSI_NULLS su o no, quando si utilizza "= NULL".
-- This will print TRUE
SET ANSI_NULLS OFF;
IF NULL = NULL
PRINT 'TRUE'
ELSE
PRINT 'FALSE'
-- This will print FALSE
SET ANSI_NULLS ON;
IF NULL = NULL
PRINT 'TRUE'
ELSE
PRINT 'FALSE'
a causa della tre valori-logica di SQL:
http://en.wikipedia.org/wiki/Null_%28SQL%29#Three-valued_logic_.283VL.29
estratto di un paragrafo relativo:
sfide
Null è stata la focus di polemiche e una fonte di dibattito a causa della relativa logica a tre valori (3VL), speciali requisiti per il suo utilizzo in join SQL e la gestione speciale richiesta dalle funzioni di aggregazione e dagli operatori di raggruppamento SQL. Computer professore di scienze Ron van der Meyden sintetizzato i vari temi come: "Le incongruenze nello standard SQL significa che non è possibile attribuire eventuali semantica logica intuitive per il trattamento dei valori nulli in SQL." Sebbene siano state fatte varie proposte per risolvere questi problemi , la complessità delle alternative ha impedito l'adozione diffusa di .
+1 Per essere l'unica risposta a menzionare questo. –
Si prega di non pubblicare solo risposte di collegamento. Includi qui le informazioni rilevanti dal link, in modo che se il sito target scompare, la tua risposta sarà comunque utile. (Questo è meglio come commento.) – jpaugh
- 1. Differenza tra null == oggetto e oggetto == null
- 2. Differenza tra 'a == null' e 'null == a'
- 3. Differenza tra null default null e default null in mysql?
- 4. Differenze tra "IS NULL" e "ISNULL()" in Mysql
- 5. Differenza tra Nil e NULL e Null in Objective-C
- 6. Esiste una differenza tra "not null" e "not null enable"?
- 7. TypeError is Null?
- 8. TypeError: a is null
- 9. Qual è la differenza tra ("") e (null)
- 10. Differenza tra null? e vuoto? Schema
- 11. Nullable Field e SQL Is Null Numero
- 12. WHERE all IS NOT NULL
- 13. Python: Differenza tra `is` e` == `?
- 14. IS NULL vs = NULL nella clausola WHERE + SQL Server
- 15. Utilizzando "Is Null/non NULL" in LINQ to SQL
- 16. C'è qualche differenza tra null e 0 quando si assegnano a puntatori in codice non sicuro?
- 17. Qual è la differenza tra null e System.DBNull.Value?
- 18. Dichiarazione caso SQL Server quando IS NULL
- 19. IS NULL valido JSON (4 byte, nient'altro)
- 20. Attributo Rails .where() IS NOT NULL
- 21. Qual è la differenza tra NOT EXISTS vs. NOT IN vs. LEFT JOIN WHERE IS NULL?
- 22. Differenza tra la variabile locale initialize null e non initialize?
- 23. cos'è la differenza tra NULL e Empty in mysql
- 24. Differenza tra Array.apply (null, Array (x)) e Array (x)
- 25. Qual è la differenza tra a.ne (null) e a! = Null in Scala?
- 26. Qual è la differenza tra NULL in C++ e null in Java?
- 27. Qual è la differenza tra DEFAULT NULL e CHECKBOX NULL mysql?
- 28. C'è qualche differenza tra $ @ e "$ @"?
- 29. SQL è nullo e = null
- 30. PHP is_null() e == null
Controllare l'articolo [wikipedia] (http://en.wikipedia.org/wiki/Null_%28SQL%29) per ulteriori informazioni. –
Questo è un dup di una serie di domande: http://stackoverflow.com/questions/1843451/why-does-null-null-evaluate-to-false-in-sql-server – Paddy