Mysql 1 | 1 | 1 | 1 | | 2 | 2 | 2 | 2 | |3 |零| 3 |零| |4 |零| 3 |零| |3 |零| 4 |零| |4 |零| 4 |零| | 5 | 6 | 5 | 6 | |
1 | 1 | 1 | 1 | | 2 | 2 | 2 | 2 | |3 |零| 3 |零| |4 |零| 3 |零| |3 |零| 4 |零| |4 |零| 4 |零| | 5 | 6 | 5 | 6 | | 6 | 7 | 6 | 7 |Mysql 1 | 1 | 1 | 1 | | 2 | 2 | 2 | 2 | |3 |零| 3 |零| |4 |零| 3 |零| |3 |零| 4 |零| |4 |零| 4 |零| | 5 | 6 | 5 | 6 | |,mysql,sql,operators,spaceship-operator,Mysql,Sql,Operators,Spaceship Operator,1 | 1 | 1 | 1 | | 2 | 2 | 2 | 2 | |3 |零| 3 |零| |4 |零| 3 |零| |3 |零| 4 |零| |4 |零| 4 |零| | 5 | 6 | 5 | 6 | | 6 | 7 | 6 | 7 | @zllalani一点也不接受两个操作数,而为(非)NULL只接受一个操作数;差别很大。。。在这方面,它与SQL标准中的=本身一样有用。@zllalani为空和不为空是一个特定于MySQL的扩展
@zllalani一点也不
接受两个操作数,而为(非)NULL
只接受一个操作数;差别很大。。。在这方面,它与SQL标准中的=
本身一样有用。@zllalani为空
和不为空
是一个特定于MySQL的扩展。因此,像一样,它与操作符没有区别。想知道MySQL是否可以在上面使用索引…@Pacerier不,ab
的反比是NOT(ab)
@zllalani,太空船操作符实际上非常有用。在“普通”编程语言和数学中,它与=
一样有用a=b
要么是true
要么是false
,除了在SQL领域,他们设法洗脑了它也可以是null
,而对其他人来说,它就是没有任何意义。事实上,如果null==null
除了给你提供true
以外的东西,整个Java、C#、Javascript、PHP等领域都会反抗。甚至有些东西也知道,undefined==undefined
=true
。宇宙飞船
operator@Mhd.Tahawi,我们是一个允许我们直接搜索运营商的谷歌。@Pacerier-我在大约5年前发现了这一点(不知道是否有更好的选择)NOT
不是运营商,它不适用于op1 op2
的结果@Jack:-是的,你是正确的。更新了答案!添加了这一点以便说明一点:)所以我想没有
operator@kip:没有!更正:
应被称为,并且=
是NULL
运算符。
WHERE p.name <=> NULL
SELECT *
FROM table
WHERE YourColumn IS NOT NULL;
SELECT *
FROM table
WHERE NOT (YourColumn <=> NULL);
mysql> SELECT 1 <=> 1, NULL <=> NULL, 1 <=> NULL;
-> 1, 1, 0
mysql> SELECT 1 = 1, NULL = NULL, 1 = NULL;
-> 1, NULL, NULL
SELECT NULL <=> NULL -- 1
SELECT TRUE <=> TRUE -- 1
SELECT col1 <=> col2 FROM myTable
mysql> SELECT 1 <=> 1, NULL <=> NULL, 1 <=> NULL;
-> 1, 1, 0
mysql> SELECT 1 = 1, NULL = NULL, 1 = NULL;
-> 1, NULL, NULL
SELECT NULL != NULL, //--Result is NULL
NOT NULL <=> NULL, //--Result is 0
NULL IS NOT NULL; //--Result is 0
mysql> SELECT 1 <=> 1, NULL <=> NULL, 1 <=> NULL;
-> 1, 1, 0
mysql> SELECT 1 = 1, NULL = NULL, 1 = NULL;
-> 1, NULL, NULL
... WHERE col_a <=> ? ...
'a' IS NULL ==> 'a' <=> NULL
'a' IS NOT NULL ==> NOT('a' <=> NULL)
WHERE p.name IS NULL
CASE
WHEN a IS NULL AND b IS NULL THEN 1 -- both operands null then 1
WHEN a IS NULL OR b IS NULL THEN 0 -- one operand is null then 0
ELSE a = b -- else behave like normal = operator
END
SELECT 1 <=> 1, NULL <=> NULL, 1 <=> NULL;
1, 1, 0
SELECT 1 = 1, NULL = NULL, 1 = NULL;
1, NULL, NULL
mysql> SELECT * FROM t JOIN t2 WHERE t2.ids = t.ids;
+----+------+----+------+
| id | ids | id | ids |
+----+------+----+------+
| 1 | 1 | 1 | 1 |
| 2 | 2 | 2 | 2 |
| 5 | 6 | 5 | 6 |
| 6 | 7 | 6 | 7 |
+----+------+----+------+
4 rows in set (0.00 sec)
mysql> SELECT * FROM t JOIN t2 WHERE t2.ids <=> t.ids;
+----+------+----+------+
| id | ids | id | ids |
+----+------+----+------+
| 1 | 1 | 1 | 1 |
| 2 | 2 | 2 | 2 |
| 3 | NULL | 3 | NULL |
| 4 | NULL | 3 | NULL |
| 3 | NULL | 4 | NULL |
| 4 | NULL | 4 | NULL |
| 5 | 6 | 5 | 6 |
| 6 | 7 | 6 | 7 |