MySQL 比较运算符
本MySQL教程探讨了用于测试相等性和不相等性的所有比较运算符,以及更高级的运算符。
本教程中我们将学习MySQL中的比较运算符, 在WHERE子句中使用比较运算符来确定要选择的记录。
下面是MySQL中的比较运算符的列表:
比较运算符 | 说明 |
---|---|
= | 等于 |
<=> | 相等(可安全比较NULL值) |
<> | 不等于 |
!= | 不等于 |
> | 大于 |
>= | 大于或等于 |
< | 小于 |
<= | 小于或等于 |
IN | 匹配列表中的值 |
NOT | 条件取反 |
BETWEEN值在指定范围内
IS NULL是NULL值
IS NOT NULL非NULL值
LIKE| 与%和_的模式匹配
EXISTS如果子查询至少返回一行,则为TRUE
MySQL 比较运算符例子
示例- 等于运算符
在MySQL中,可以使用=操作符来检测查询中的相等性。=操作符
只能测试不为NULL的值是否相等。 即不能写成 ContactName = NULL。
例如:
SELECT * FROM suppliers WHERE ContactName = 'Yoshi Nagase';
SELECT语句将返回suppliers表中ContactName等于Yoshi Nagase的所有行。
示例-相等运算符(可安全比较NULL值)
由于 =运算符仅比较那些非NULL值,因此与NULL值一起使用并不安全。为了克服此限制,MySQL添加了 <=>运算符,以方便您测试NULL和非NULL值的相等性。
下面演示了 =运算符和 <=>运算符之间的区别。
假设我们在MySQL中有一张employees的表,其中的数据如下:
EmployeeID | LastName | City | Region |
---|---|---|---|
1 | Davolio | Seattle | NULL |
2 | Fuller | Tacoma | WA |
3 | Leverling | NULL | NULL |
4 | Buchanan | London | London |
在查询中使用 =运算符:
SELECT EmployeeID,LastName,City,Region FROM employees WHERE City = Region;
结果如下:
EmployeeID | LastName | City | Region |
---|---|---|---|
4 | Buchanan | London | London |
使用 <=>运算符重新查询:
SELECT EmployeeID,LastName,City,Region FROM employees WHERE City <>=> Region;
结果如下:
EmployeeID | LastName | City | Region |
---|---|---|---|
3 | Leverling | NULL | NULL |
4 | Buchanan | London | London |
查询返回contacts表中所有City等于Region的行,包括值都为NULL的行。
示例-不等式运算符
在MySQL中,可以使用 <>或!=运算符来指定查询中的不相等条件。
如下所示:
SELECT * FROM suppliers WHERE ContactName <> 'Yoshi Nagase';
SELECT语句将从contacts表中返回所有ContactName不等于Yoshi Nagase的行。
使用 !=运算符,如下所示:
SELECT * FROM suppliers WHERE ContactName != 'Yoshi Nagase';
这两个查询返回的结果是相同的。
示例-大于运算符
在MySQL中大于运算符为 >:
SELECT * FROM suppliers WHERE SupplierID > 20;
查询将返回suppliers表中SupplierID大于20的所有行。
示例-大于或等于运算符
在MySQL中大于或等于运算符为 >=:
SELECT * FROM suppliers WHERE SupplierID >= 20;
查询将返回suppliers表中SupplierID大于或者等于20的所有行。
示例-小于运算符
SELECT * FROM suppliers WHERE SupplierID < 20;
查询将返回suppliers表中SupplierID 小于20的所有行。
示例-小于或等于运算符
SELECT * FROM suppliers WHERE SupplierID <>= 20;
查询将返回suppliers表中SupplierID小于或者等于20的所有行。