Что значит "<=>" в MySQL? - PullRequest
       50

Что значит "<=>" в MySQL?

16 голосов
/ 29 декабря 2010

Что означает и делает <=> в MySQL?

Ответы [ 5 ]

15 голосов
/ 29 декабря 2010

Руководство говорит само за себя:

NULL-безопасно равно.Этот оператор выполняет сравнение на равенство, как оператор =, но возвращает 1, а не NULL, если оба операнда имеют значение NULL, и 0, а не NULL, если один операнд равен 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> 
4 голосов
/ 29 декабря 2010

Это NULL-безопасный оператор равенства .

Разница между <=> и = равна, когда один или оба операнда имеют значения NULL.Например:

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

Вот полная таблица для <=> сравнения значений 1, 2 и NULL:

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

Сравнение с обычным оператором равенства:

     |  1      2    NULL
-----+-------------------
1    | True   False NULL
2    | False  True  NULL
NULL | NULL   NULL  NULL
2 голосов
/ 29 декабря 2010

<=> - это так называемый NULL -защищенный оператор равенства .

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

SELECT 1 = 1, NULL = NULL, 1 = NULL;
-> 1, NULL, NULL
2 голосов
/ 29 декабря 2010
1 голос
/ 29 декабря 2010

Это то же самое, что стандартное ключевое слово SQL DISTINCT

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