# 运算符

表达式中的运算符与常用控制流 / 转换函数。优先级遵循常见 SQL 习惯（算术高于比较，比较高于逻辑）；拿不准时加括号。

## 算术

| 运算符 | 含义 |
| --- | --- |
| `+` `-` `*` `/` | 加、减、乘、除 |
| `DIV` | 整数除 |
| `%` / `MOD` | 取余 |
| 一元 `-` | 取负 |

## 比较

| 运算符 | 含义 |
| --- | --- |
| `=` `<>` / `!=` `<` `<=` `>` `>=` | 相等与不等比较 |
| `BETWEEN ... AND ...` / `NOT BETWEEN` | 区间 |
| `IN (...)` / `NOT IN` | 集合 |
| `IS` / `IS NOT` | 与布尔真假比较 |
| `IS NULL` / `IS NOT NULL` / `ISNULL()` | 空值判断 |
| `LIKE` / `NOT LIKE` | 模式匹配（大小写敏感习惯同引擎配置） |
| `ILIKE` | 不区分大小写的模糊匹配 |
| `COALESCE()` | 返回参数列表中第一个非 NULL |

`NULL` 与任何值用 `=` 比较结果都不是 TRUE，判断空请用 `IS NULL`。

## 逻辑

| 运算符 | 含义 |
| --- | --- |
| `AND` / `&&` | 与 |
| `OR` | 或 |
| `XOR` | 异或 |
| `NOT` / `!` | 非 |

## 位运算

| 运算符 | 含义 |
| --- | --- |
| `&` `\|` `^` | 按位与 / 或 / 异或 |
| `<<` `>>` | 左移 / 右移 |
| `~` | 按位取反 |

## 赋值

| 运算符 | 含义 |
| --- | --- |
| `=` | 在 `SET` 等语境中赋值（与比较的 `=` 同形，语境区分） |

## 类型转换

| 函数 / 运算符 | 含义 |
| --- | --- |
| `CAST(expr AS type)` | 显式转换 |
| `CONVERT(expr, type)` | 显式转换（日期时间、小数等场景常用） |
| `BINARY` | 转为二进制串语义 |
| `ENCODE` / `DECODE` / `SERIAL` / `SERIAL_FULL` 等 | 编码与序列化相关（按版本支持使用） |

## 控制流

| 形式 | 含义 |
| --- | --- |
| `CASE WHEN ... THEN ... ELSE ... END` | 多分支 |
| `IF(cond, a, b)` | 条件二选一 |
| `IFNULL(a, b)` | a 为 NULL 时取 b |
| `NULLIF(a, b)` | a 与 b 相等则 NULL，否则 a |

## INTERVAL

日期运算中使用 `INTERVAL` 表达时间间隔（与 `DATE_ADD` / `DATE_SUB` 或字面量运算配合）。单位包括 `DAY`、`HOUR`、`MINUTE`、`SECOND`、`MONTH`、`YEAR` 等常见集合。

```sql
SELECT DATE_ADD(NOW(), INTERVAL 1 DAY);
```

## 相关页面

- [函数](functions.md)
- [数据类型](data-types.md)
- [结构与语法](language-structure.md)
