TL; DR
这是
NULL安全的相等运算符。
像常规
=运算符一样,将两个值进行比较,结果为
0(不相等)或
1(相等);换句话说:
'a' <=> 'b'yields
0和
'a' <=>'a'yields
1。
与常规
=运算符不同,of的值
NULL没有特殊含义,因此它永远不会产生
NULL可能的结果。所以:
'a' <=>NULL收益率
0和
NULL <=> NULL收益率
1。
有用性
当两个操作数都可能包含
NULL并且您需要两列之间的一致比较结果时,这可能会很有用。
另一个用例是准备好的语句,例如:
... WHERe col_a <=> ? ...
在这里,占位符可以是标量值,也可以
NULL不必更改有关查询的任何内容。
相关运营商
此外
<=>还有可以用来比较其他两家运营商
NULL,分别是
IS NULL和
IS NOT NULL;
它们是ANSI标准的一部分,因此与其他数据库不同(与
<=>特定于MySQL)不同,它们也受支持。
您可以将它们视为MySQL的专长
<=>:
'a' IS NULL ==> 'a' <=> NULL'a' IS NOT NULL ==> NOT('a' <=> NULL)基于此,您的特定查询(片段)可以转换为更可移植的:
WHERe p.name IS NULL
支持
SQL:2003标准为此引入了一个谓词,其谓词
<=>的形式与MySQL的运算符完全相同,其形式如下:
IS [NOT] DISTINCT FROM
普遍支持以下内容,但相对复杂:
CASE WHEN (a = b) or (a IS NULL AND b IS NULL) THEN 1 ELSE 0END = 1



