Che cosa significa e fa <=>
in MySQL?Che cosa significa "<=>" in MySQL?
16
A
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
NULL di sicurezza pari a operatore
http://dev.mysql.com/doc/refman/5.0/en/comparison-operators.html#operator_equal-to
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`
possibile duplicato di [Cos'è questo operatore <=> in MySQL?] (Http://stackoverflow.com/questions/21927117/questo-è-questo-operatore-in-mysql) –
Questo è di 3 anni più vecchio ... – kuba
quello ha 6 volte più visualizzazioni e 2x risposte. SO è un posto strano. –