运算符:!= 和 <>
- 在MySQL中
!=
和<>
的功能一致,在sql92规范中建议是:!=
,新的规范中建议为:<>
下面查询username为"陈哈哈"以外的用户,以下两条语句的作用一样。
SELECT * FROM t_user WHERE username != "陈哈哈"; | |
SELECT * FROM t_user WHERE username <> "陈哈哈"; |
1、运算符:= 和 <=>
值得一提的是 =
、 <=>
以及 is
这三个运算符的用法
大家都知道 is 专门用来判断是否为 NULL,而 =
则是用来判断非NULL以外的所有数据类型使用。而 <=>
则是前两者合起来。
先提供测试表数据如下:
mysql> SELECT * from t_user; | |
+----+-----------+----------+ | |
| id | username | password | | |
+----+-----------+----------+ | |
| 1 | 陈哈哈 | abcd1234 | | |
| 2 | 侨布斯 | 1234 | | |
| 3 | 提莫 | 1234abcd | | |
| 4 | aaa | NULL | | |
| 5 | NULL | aaaa | | |
+----+-----------+----------+ | |
5 rows in set (0.00 sec) |
下面两个SQL的查询结果一致,均查出了username 为 NULL的数据
mysql> SELECT * from t_user where `username` is null; | |
+----+----------+----------+ | |
| id | username | password | | |
+----+----------+----------+ | |
| 5 | NULL | aaaa | | |
+----+----------+----------+ | |
1 row in set (0.00 sec) | |
mysql> SELECT * from t_user where `username` <=> null; | |
+----+----------+----------+ | |
| id | username | password | | |
+----+----------+----------+ | |
| 5 | NULL | aaaa | | |
+----+----------+----------+ | |
1 row in set (0.00 sec) |
下面两个SQL的查询结果一致,均查出了username 为 ‘陈哈哈’ 的数据
mysql> SELECT * from t_user where `username` = '陈哈哈'; | |
+----+-----------+----------+ | |
| id | username | password | | |
+----+-----------+----------+ | |
| 1 | 陈哈哈 | abcd1234 | | |
+----+-----------+----------+ | |
1 row in set (0.00 sec) | |
mysql> SELECT * from t_user where `username` <=> '陈哈哈'; | |
+----+-----------+----------+ | |
| id | username | password | | |
+----+-----------+----------+ | |
| 1 | 陈哈哈 | abcd1234 | | |
+----+-----------+----------+ | |
1 row in set (0.00 sec) |
可见,<=>
运算符相当于封装了=
和 is
,既可以判断 非NULL值,也可以用来判断NULL值。
- <=> 只用于MySQL数据库,
username <=> NULL
得 0 等价 username is NULL,NOT(username <=> NULL)
等价 username is NOT NULL; - 当col1,col2两个可能存在NULL值的列需要进行相等比较时,可以使用 col1 <=> col2,可以把null=null的也关联起来。