第 15 章 · 第三节 · 课件第 21、22 页
算术运算符与算术表达式
除法 / 的商是实数,DIV 是整数除。

重 点
2 / 4 的结果是 0.5000,2 DIV 4 的结果是 0。除数为 0 时结果为 NULL。
除法 / 的商是实数,DIV 是整数除。

2 / 4 的结果是 0.5000,2 DIV 4 的结果是 0。除数为 0 时结果为 NULL。
结果为 1、0 或 NULL,判断空值用 IS NULL。
| 运算符 | 含义 | 例子与结果 |
|---|---|---|
= | 相等 | 2 = 5 为 0 |
> < >= <= | 大于、小于、大于等于、小于等于 | 5 >= 3 为 1 |
<> 或 != | 不等于 | -5 <> 3 为 1 |
<=> | 安全等于,两边都是 NULL 时为 1 | NULL <=> NULL 为 1 |
IS NULL、IS NOT NULL | 是否为 NULL | NULL IS NULL 为 1 |
BETWEEN … AND … | 是否在两个值之间 | 10 BETWEEN 1 AND 20 为 1 |
IN、NOT IN | 是否在集合中 | 5 IN (10, 20, 30) 为 0 |
LIKE、NOT LIKE | 模式匹配,% 代表任意多个字符,_ 代表一个字符 | '张玉涛' LIKE '张%' 为 1 |
REGEXP | 正则表达式匹配 | 's1' REGEXP '^s[1-9]' 为 1 |
有 NULL 参加比较,结果为 NULL。判断是否为空要用 IS NULL,或者用安全等于 <=>。
用 ^ $ . [ ] * { } 描述字符串的模式。
a REGEXP p:a 是字符串,p 是用正则表达式写的模式。a 与 p 匹配时结果为 1,否则为 0,有一个为 NULL 时结果为 NULL。
| 符号 | 匹配 | 例子 |
|---|---|---|
^ | 以后面的字符开头 | 's1' REGEXP '^s' 为 1 |
$ | 以前面的字符结尾 | 'abc' REGEXP 'c$' 为 1 |
. | 任意一个字符 | 'abc' REGEXP 'a.c' 为 1 |
[…] | 方括号中的任意一个字符。[a-z] 表示 a 到 z,[0-9] 表示任意数字 | 's1' REGEXP '[0-9]' 为 1 |
* | 前面的字符出现 0 次或多次 | 'aaa' REGEXP '^a*$' 为 1 |
{n,m} | 前面的字符至少出现 n 次,至多 m 次 | 'aa' REGEXP 'a{2,5}' 为 1 |
LIKE 要求整个字符串符合模式,REGEXP 只要有一部分匹配就为 1。
逻辑运算看真假,位运算按二进制位计算。
| 运算符 | 结果为 1 的情况 | 例子 |
|---|---|---|
NOT 或 ! | 操作数为 0 | !5 为 0 |
AND 或 && | 两个操作数都非零 | 5 AND NULL 为 NULL |
OR 或 || | 至少一个非零 | 0 OR 5 为 1 |
XOR | 一个为零,另一个非零 | 5 XOR 1 为 0 |
| 运算符 | 含义 | 例子 |
|---|---|---|
& | 按位与 | 7 & 4 为 4 |
| | 按位或 | 7 | 4 为 7 |
^ | 按位异或 | 7 ^ 4 为 3 |
~ | 按位取反 | ~(-2) 为 1 |
>> << | 右移、左移 | 7 >> 2 为 1 |
逻辑表达式常用来表示复杂的条件,例如判断闰年。
先括号,再算术,然后比较,最后逻辑运算。
| 次序 | 运算符 |
|---|---|
| 1 | 括号 ( ) |
| 2 | !、负号 -、~ |
| 3 | ^ |
| 4 | *、/、DIV、%、MOD |
| 5 | +、- |
| 6 | <<、>> |
| 7 | &,然后 | |
| 8 | 比较运算符,然后 BETWEEN |
| 9 | NOT |
| 10 | AND,然后 XOR,最后 OR |
| 11 | 赋值 =、:= |