2010-12-29 33 views
16

¿Qué significa <=> en MySQL y qué hacer?¿Qué significa "<=>" en MySQL?

+0

posible duplicado de [¿Qué es este operador <=> en MySQL?] (Http://stackoverflow.com/questions/21927117/what-is-this-operator-in-mysql) –

+0

Éste es 3 años más antiguo ... – kuba

+0

ese tiene 6x más vistas y 2x respuestas. SO es un lugar extraño. –

Respuesta

15

El manual lo dice todo:

NULL de fallos iguales. Este operador realiza una comparación de igualdad como el operador =, pero devuelve 1 más bien que NULL si ambos operandos son NULL, y 0 en lugar de NULL si un operando es 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

<=> es una llamada 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

Es el NULL-safe equal operator.

La diferencia entre < => y = es cuando uno o ambos operandos son valores NULOS. Por ejemplo:

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

Aquí está la tabla completa para el <=> comparación de los valores 1, 2 y NULL:

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

comparar con el operador de igualdad ordinaria:

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

Es la Igual que la palabra clave estándar SQL DISTINCT

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