开发者社区> 问答> 正文

在MySQL中,此运算符<=>是什么??mysql

我正在处理由以前的开发人员编写的代码,并在查询中说:

WHERE p.name <=> NULL <=>这个查询是什么意思?等于=吗?还是语法错误?

但是它没有显示任何错误或异常。我已经知道<>= !=在MySQL的。

展开
收起
保持可爱mmm 2020-05-17 20:56:04 898 0
1 条回答
写回答
取消 提交回答
  • 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 0 END = 1来源:stack overflow

    2020-05-17 20:58:20
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
搭建电商项目架构连接MySQL 立即下载
搭建4层电商项目架构,实战连接MySQL 立即下载
PolarDB MySQL引擎重磅功能及产品能力盛大发布 立即下载

相关镜像