对于=操作符,两个值被比较,结果是0(不相等)或者1(相等)。
比较操作符<=>表示NULL安全的等价。这个比较操作符执行等价比较,和=操作符类似,但是如果两个操作数都是NULL,会返回1,而不是返回NULL;如果其中一个操作数是NULL,会返回0,而不是返回NULL。
当参与比较的两个操作数都可能包含NULL,而你需要获得两个列的一个一致性结果的时候,<=>比较操作符就很有用了。另外一个用例是,对于prepared语句,例如:
... WHERE col_a <=> ? ...
这里的占位符可能是标量或者NULL,并不需要对语句做任何修改。
<=>是MySQL特有的语法:
'a' IS NULL ==> 'a' <=> NULL 'a' IS NOT NULL ==> NOT('a' <=> NULL)
mysql> SELECT 1 <=> 1, NULL <=> NULL, 1 <=> NULL; -> 1, 1, 0 mysql> SELECT 1 = 1, NULL = NULL, 1 = NULL; -> 1, NULL, NULL
对于比较操作,(a,b)<=>(x,y)等价于:
(a <=> x) AND (b <=> y)