MySQL 运算符
算术、比较、逻辑、位运算与特殊运算符(<=>、BETWEEN)。
Key Points除了常规的 =、AND、OR,MySQL 还有 NULL 安全的 <=> 与位运算。
比较与逻辑
| 运算符 | 含义 |
|---|---|
| = | 等于(NULL 不安全) |
| <=> | NULL 安全等于 |
| <> / != | 不等于 |
| AND / OR / NOT | 逻辑与或非 |
| BETWEEN a AND b | 闭区间 [a,b] |
NULL 安全等于
SQL
SELECT 1 <=> 1, NULL <=> NULL, 1 <=> NULL;Output
+---------+---------------+------------+
| 1 <=> 1 | NULL <=> NULL | 1 <=> NULL |
+---------+---------------+------------+
| 1 | 1 | 0 |
+---------+---------------+------------+位运算
SQL
SELECT 5 & 3, 5 | 2, 5 ^ 1, 1 << 3;Output
+-------+-------+-------+-------+
| 5 & 3 | 5 | 2 | 5 ^ 1 | 1 << 3 |
+-------+-------+-------+-------+
| 1 | 7 | 4 | 8 |
+-------+-------+-------+-------+<=> is MySQL's NULL-safe equality: NULL <=> NULL is 1, anything <=> NULL is 0 — ideal for safely comparing nullable columns in WHERE/ON.比较与逻辑
| 运算符 | 含义 |
|---|---|
| = | 等于(NULL 不安全) |
| <=> | NULL 安全等于 |
| <> / != | 不等于 |
| AND / OR / NOT | 逻辑与或非 |
| BETWEEN a AND b | 闭区间 [a,b] |
NULL 安全等于
SQL
SELECT 1 <=> 1, NULL <=> NULL, 1 <=> NULL;Output
+---------+---------------+------------+
| 1 <=> 1 | NULL <=> NULL | 1 <=> NULL |
+---------+---------------+------------+
| 1 | 1 | 0 |
+---------+---------------+------------+位运算
SQL
SELECT 5 & 3, 5 | 2, 5 ^ 1, 1 << 3;Output
+-------+-------+-------+-------+
| 5 & 3 | 5 | 2 | 5 ^ 1 | 1 << 3 |
+-------+-------+-------+-------+
| 1 | 7 | 4 | 8 |
+-------+-------+-------+-------+<=> 是 MySQL 独有的 NULL 安全等于:两边都是 NULL 时返回 1,一边 NULL 返回 0,专门用来在 WHERE/ON 里安全地比较可能为空的值。