算数运算符
+
:加法-
:减法*
:乘法/
,DIV
:除法%
,MOD
:模运算
比较运算符
当使用
SELECT
语句进行查询时,MySQL允许用户对表达式的左边操作数和右边的操作数进行比较,比较结果真,则返回1,为加则返回0,比较结果不确定则返回NULL
。
运算符 | 作用 |
---|---|
= | 等于,NULL不可以用“=”比较 |
<> 或 != | 不等于,不能比较NULL |
<=> | NULL安全的等于(NULL-safe),可以比较NULL |
< | 小于 |
<= | 小于等于 |
> | 大于 |
>= >= | 大于等于 |
BETWEEN | 存在于指定范围 |
IN | 存在于指定集合 |
IS NULL | 为NULL |
IS NOT NULL | 不为NULL |
LIKE | 通配符匹配 |
REGEXP或RLIKE | 正则表达式匹配 |
- BETWEEN
运算符使用格式为:a BETWEEN min AND max
, 当a大于等于min并且小于等于max时,返回值为1,否则返回0;当操作数a,min,max类型相同时,表达式等价于a >= min and a <= max
,当操作数类型不同时,比较时会遵循类型转换原则进行转换。
- IN
运算符使用格式为:a IN (value1, value2, ..., valuen)
,当a在列表中,则返回1,否则返回0。
- LIKE
运算符:a LIKE %123%
百分号(%)通配符:表示任何字符出现任意次数(不能匹配NULL)。例如查找所有以abc开头的name:
SELECT name
FROM TABLE
WHERE name LIKE 'abc%';
检索任意地方出现词abc的name
SELECT name
FROM TABLE
WHERE name LIKE '%abc%';
检索以a开头,以b结尾的name
SELECT name
FROM TABLE
WHERE name LIKE 'a%b';
下划线(_)通配符:与%类似,但只能匹配一个字符。
注意:通配符搜索时间较长,应该尽量避免使用。
REGEXP
运算符:str REGEXP str_pat
,当str字符串中含有str_pat相匹配的字符串时,返回1,否则返回0。
.:可以匹配任意一个字符
SELECT name
FROM TABLE
WHERE name REGEXP '.000'
ORDER BY name;
区分大小写:BINARY
关键字
SELECT name
FROM TABLE
WHERE name REGEXP BINARY 'Abc .000';
OR匹配:|。例如’1000|2000’。
匹配几个字符之一:[]。例如’[123]abc’匹配1abc或2abc或3abc。
匹配特殊字符:例如匹配. 。应使用\\.。则应使用\\为前导。
定位符
- ^:文本的开始
- $:文本的结尾
- [[:<:]]:词的开始
- [[:>:]]:词的结尾
逻辑运算符
又称布尔运算符,用来确认表达式的真假。
运算符 | 作用 |
---|---|
NOT 或 ! | 逻辑非:返回与操作数相反的结果,但是 NOT NULL 的返回值为NULL |
AND 或 && | 逻辑与:操作数都为真返回1,操作数中只要有NULL就返回NULL,没NULL有0返回0 |
OR 或 || | 逻辑或:操作数非NULL,有一个操作数为1则返回1,否则返回0, 如果有一个NULL,另外为1就返回1,否则返回NULL,如果都为NULL则返回NULL |
XOR | 逻辑异或:当任意一个操作数为NULL时,返回值为NULL 对于非NULL的操作数,两个操作数的逻辑值相异则返回1,否则返回0 |
位运算符
位运算是将给定的操作数转化为二进制后,对各个操作数每一位都进行指定的逻辑运算,得到的二进制结果转换为十进制后就是位运算的结果。
运算符 | 作用 |
---|---|
& | 位与 |
| | 位或 |
^ | 位异或 |
~ | 位取反 |
>> >> | 位右移 |
<< | 位左移 |
运算符的优先级
优先级顺序 | 运算符 |
---|---|
1 | := |
2 | ||、OR、XOR |
3 | &&、AND |
4 | NOT |
5 | BETWEEN、CASE、WHEN、THEN、ELSE |
6 | =、<=>、>=、>、<=、<、<>、!=、IS、LIKE、REGEXP、IN |
7 | | |
8 | & |
9 | << 和 >> |
10 | -和+ |
11 | *、/、DIV、%、MOD |
12 | ^ |
13 | -(一元减号)、~ |
14 | ! |
参考书籍:《深入浅出MySQL》