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