2010-12-29 1 views
16

Che cosa significa e fa <=> in MySQL?Che cosa significa "<=>" in MySQL?

+0

possibile duplicato di [Cos'è questo operatore <=> in MySQL?] (Http://stackoverflow.com/questions/21927117/questo-è-questo-operatore-in-mysql) –

+0

Questo è di 3 anni più vecchio ... – kuba

+0

quello ha 6 volte più visualizzazioni e 2x risposte. SO è un posto strano. –

risposta

15

Il manual dice tutto:

NULL-safe uguali. Questo operatore esegue un confronto di uguaglianza come l'operatore =, ma restituisce 1 piuttosto di NULL se entrambi gli operandi sono NULL, e 0 anziché NULL se un operando è NULL.

mysql> select NULL <=> NULL; 
+---------------+ 
| NULL <=> NULL | 
+---------------+ 
|    1 | 
+---------------+ 
1 row in set (0.00 sec) 

mysql> select NULL = NULL; 
+-------------+ 
| NULL = NULL | 
+-------------+ 
|  NULL | 
+-------------+ 
1 row in set (0.00 sec) 

mysql> select NULL <=> 1; 
+------------+ 
| NULL <=> 1 | 
+------------+ 
|   0 | 
+------------+ 
1 row in set (0.00 sec) 

mysql> select NULL = 1; 
+----------+ 
| NULL = 1 | 
+----------+ 
|  NULL | 
+----------+ 
1 row in set (0.00 sec) 

mysql> 
2

<=> è un cosiddetto NULL-safe-equality operator.

SELECT 1 <=> 1, NULL <=> NULL, 1 <=> NULL; 
-> 1, 1, 0 

SELECT 1 = 1, NULL = NULL, 1 = NULL; 
-> 1, NULL, NULL 
4

È il NULL-safe equal operator.

La differenza tra < => e = è quando uno o entrambi gli operandi sono valori NULL. Per esempio:

NULL <=> NULL gives True 
NULL = NULL gives NULL 

Ecco la tabella completa per il confronto <=> dei valori 1, 2 e NULL:

 
    | 1  2 NULL 
-----+------------------- 
1 | True False False 
2 | False True False 
NULL | False False True 

confronta con l'ordinario operatore di uguaglianza:

 
    | 1  2 NULL 
-----+------------------- 
1 | True False NULL 
2 | False True NULL 
NULL | NULL NULL NULL 
1

E 'il lo stesso della parola chiave standard SQL DISTINCT

SELECT * FROM somewhere WHERE `address1` is not distinct from `address2`