优秀的编程知识分享平台

网站首页 > 技术文章 正文

一文看懂MySQL运算符 !=、<>、=、<=>

nanyue 2024-11-18 15:18:49 技术文章 3 ℃

运算符:!=、<>、is not

在MySQL中!= <> 的功能一致,在sql92规范中的建议是使用:!=,新的规范中建议使用: <>。但是不管是!=还是<>都无法和 NULL 配合使用来查询数据,这个时候就需要使用is not。

我们来看一个简单的示例。

// <>、!=配合非null的值查找数据
SELECT * FROM user WHERE userName <> "li.zhou"
SELECT * FROM user WHERE userName != "li.zhou"
// is not 配合 null 查出userName不是null的数据
SELECT * FROM user WHERE userName is not null

运算符:=、<=>、is

is 专门用来判断是否为 NULL,而 = 则是用来判断NULL以外的所有数据类型,而 <=> 就是他们2个结合体。所以当传入的参数存在NULL的可能的情况下,一定要使用 <=> 而不是 =。

另外当两个可能存在NULL的列进行比较的时候,比如列A和列B,当A和B均为NULL的时候,A = B 返回的是false,而 A <=> B 的结果则是 true。

最后,<=> 只用于MySQL数据库,其他数据库是不支持的,千万要注意。

最后我们再看来一个示例:

先准备一个表格,如下:

+----+-----------+----------+
| id | userName  | password |
+----+-----------+----------+
|  1 | li.zhou    | NULL |
|  2 | NULL      | abc |
|  3 | NULL      | NULL |

先运行3个输入不为NULL的sql命令:

// 能找到数据
SELECT * FROM user WHERE userName = "li.zhou"
// 直接执行异常
SELECT * FROM user WHERE userName is "li.zhou"
// 能找到数据
SELECT * FROM user WHERE userName <=> "li.zhou"

再运行3个输入为NULL的sql命令

// 不能找到数据
SELECT * FROM user WHERE userName = null
// 能找到数据
SELECT * FROM user WHERE userName is null
// 能找到数据
SELECT * FROM user WHERE userName <=> null

最后再运行2个进行比较的sql

// 不能找到数据
SELECT * FROM user WHERE userName = password
// 能找到第三条数据
SELECT * FROM user WHERE userName <=> password

Tags:

最近发表
标签列表