首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL中的运算符<=>是什么?

MySQL中的运算符<=>是什么?
EN

Stack Overflow用户
提问于 2014-02-21 14:40:17
回答 4查看 54.9K关注 0票数 178

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

代码语言:javascript
复制
WHERE p.name <=> NULL

这个查询中的<=>是什么意思?它是否等同于=?或者是语法错误?

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

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-02-21 15:56:09

TL;DR

这是NULL safe equal运算符。

与常规的=运算符一样,比较两个值,结果要么是0 (不等于),要么是1 (等于);换句话说:'a' <=> 'b'产生0'a' <=> 'a'产生1

与常规的=运算符不同,NULL的值没有特殊含义,因此它永远不会生成NULL作为可能的结果;因此:'a' <=> NULL生成0NULL <=> NULL生成1

有用性

当两个操作数都可能包含NULL,并且需要两列之间的比较结果一致时,这会很有用。

另一个用例是使用预准备语句,例如:

代码语言:javascript
复制
... WHERE col_a <=> ? ...

在这里,占位符可以是标量值,也可以是NULL,而不必更改查询的任何内容。

相关操作符

除了<=>之外,还有另外两个运算符可用于与NULL进行比较,即IS NULLIS NOT NULL;它们是ANSI标准的一部分,因此在其他数据库上也受支持,这与特定于MySQL的<=>不同。

你可以把它们看作是MySQL的<=>的专门化。

代码语言:javascript
复制
'a' IS NULL     ==> 'a' <=> NULL
'a' IS NOT NULL ==> NOT('a' <=> NULL)

基于此,您的特定查询(片段)可以转换为更可移植的:

代码语言:javascript
复制
WHERE p.name IS NULL

支持

SQL:2003标准为此引入了一个谓词,其工作方式与MySQL的<=>操作符完全相同,形式如下:

代码语言:javascript
复制
IS [NOT] DISTINCT FROM 

以下是普遍支持的,但相对复杂:

代码语言:javascript
复制
CASE WHEN (a = b) or (a IS NULL AND b IS NULL)
     THEN 1
     ELSE 0
END = 1
票数 259
EN

Stack Overflow用户

发布于 2014-02-21 14:42:52

它是空安全的等于运算符。检查description

票数 5
EN

Stack Overflow用户

发布于 2016-02-27 18:44:25

代码语言:javascript
复制
mysql> SELECT * FROM t JOIN t2 WHERE t2.ids = t.ids;
+----+------+----+------+
| id | ids  | id | ids  |
+----+------+----+------+
|  1 |    1 |  1 |    1 |
|  2 |    2 |  2 |    2 |
|  5 |    6 |  5 |    6 |
|  6 |    7 |  6 |    7 |
+----+------+----+------+
4 rows in set (0.00 sec)

mysql> SELECT * FROM t JOIN t2 WHERE t2.ids <=> t.ids;
+----+------+----+------+
| id | ids  | id | ids  |
+----+------+----+------+
|  1 |    1 |  1 |    1 |
|  2 |    2 |  2 |    2 |
|  3 | NULL |  3 | NULL |
|  4 | NULL |  3 | NULL |
|  3 | NULL |  4 | NULL |
|  4 | NULL |  4 | NULL |
|  5 |    6 |  5 |    6 |
|  6 |    7 |  6 |    7 |
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21927117

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档