Skip to main content

MySQL和运算符示例

MySQL和operator简介

MySQL没有内置的布尔类型。相反,它使用数字0作为假,使用非零值作为真。

AND运算符是组合两个或多个布尔表达式并返回1、0或NULL的逻辑运算符:

A AND B

在这个表达式中,A和B被称为操作数。它们可以是文字值或表达式。

如果A和B都不为零且不为空,则逻辑AND运算符返回1。如果任一操作数为零,则返回0;否则,它将返回NULL。

如果A和B都不为零且不为空,则逻辑AND运算符返回1。例如:

SELECT 1 AND 1;
+---------+
| 1 AND 1 |
+---------+
| 1 |
+---------+
1 row in set (0.00 sec)

如果A或B为零或A和B均为零,逻辑AND运算符返回0:

SELECT 1 AND 0, 0 AND 1, 0 AND 0, 0 AND NULL;
+---------+---------+---------+------------+
| 1 AND 0 | 0 AND 1 | 0 AND 0 | 0 AND NULL |
+---------+---------+---------+------------+
| 0 | 0 | 0 | 0 |
+---------+---------+---------+------------+
1 row in set (0.00 sec)

如果任一操作数为非零或两个操作数均为空,则逻辑AND运算符返回NULL。

SELECT 1 AND NULL, NULL AND NULL;
+------------+---------------+
| 1 AND NULL | NULL AND NULL |
+------------+---------------+
| NULL | NULL |
+------------+---------------+
1 row in set (0.00 sec)

下表说明了结合true、false和null时AND运算符的结果。

实际上,您将在SELECT、UPDATE、DELETE语句的WHERE子句中使用AND运算符来形成一个条件。此外,还可以在内部联接和左联接子句的条件中使用AND运算符。

在计算包含AND运算符的表达式时,MySQL会在确定结果后立即停止计算表达式的其余部分。

这被称为短路评估。换句话说,AND运算符短路。例如:

SELECT 1 = 0 AND 1 / 0 ;
+-----------------+
| 1 = 0 AND 1 / 0 |
+-----------------+
| 0 |
+-----------------+
1 row in set (0.01 sec)

在本例中,MySQL只计算表达式1=0和1/0的第一部分1=0。

由于表达式1=0返回0,MySQL可以确定整个表达式的结果,即0。

因此,MySQL不需要计算表达式的剩余部分,即1/0;它将发出一个零除误差。

MySQL和运算符示例

让我们使用示例数据库中的customers表进行演示。

以下声明使用AND运算符查找位于美国加利福尼亚州(CA)的客户:

SELECT 
customername,
country,
state
FROM
customers
WHERE
country = 'USA' AND
state = 'CA';
+------------------------------+---------+-------+
| customername | country | state |
+------------------------------+---------+-------+
| Mini Gifts Distributors Ltd. | USA | CA |
| Mini Wheels Co. | USA | CA |
| Technics Stores Inc. | USA | CA |
| Toys4GrownUps.com | USA | CA |
| Boards & Toys Co. | USA | CA |
| Collectable Mini Designs Co. | USA | CA |
| Corporate Gift Ideas Co. | USA | CA |
| Men 'R' US Retailers, Ltd. | USA | CA |
| The Sharp Gifts Warehouse | USA | CA |
| West Coast Collectables Co. | USA | CA |
| Signal Collectibles Ltd. | USA | CA |
+------------------------------+---------+-------+
11 rows in set (0.00 sec)

通过使用AND运算符,可以组合两个以上的布尔表达式。例如,以下查询返回位于美国加利福尼亚州且信用额度大于10万的客户。

SELECT 
customername,
country,
state,
creditlimit
FROM
customers
WHERE
country = 'USA' AND
state = 'CA' AND
creditlimit > 100000;
+------------------------------+---------+-------+-------------+
| customername | country | state | creditlimit |
+------------------------------+---------+-------+-------------+
| Mini Gifts Distributors Ltd. | USA | CA | 210500.00 |
| Collectable Mini Designs Co. | USA | CA | 105000.00 |
| Corporate Gift Ideas Co. | USA | CA | 105000.00 |
+------------------------------+---------+-------+-------------+
3 rows in set (0.00 sec)

总结