代码改变世界

MySQL中的比较操作符<=>

2019-09-08 21:34  abce  阅读(5010)  评论(0编辑  收藏  举报

对于=操作符,两个值被比较,结果是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)