1、运算符:!=
和 <>
在MySQL(MariaDB)中!=
和 <>
的功能一致,在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、MariaDB数据库,username <=> NULL
等价 username is NULL
,NOT(username <=> NULL)
等价 username is NOT NULL
;
当col1,col2两个可能存在NULL值的列需要进行相等比较时,可以使用 col1 <=> col2,可以把null=null的也关联起来。