一,算术运算符
运算符 | 作用 |
---|---|
+ | |
- | |
* | |
/,div | 除法,返回商 |
%,mod | 除法,返回余数 |
例子:
mysql> select 1+0.3,1-0.3,1*0.3,5/2,5%2;
+-------+-------+-------+--------+------+
| 1+0.3 | 1-0.3 | 1*0.3 | 5/2 | 5%2 |
+-------+-------+-------+--------+------+
| 1.3 | 0.7 | 0.3 | 2.5000 | 1 |
+-------+-------+-------+--------+------+
1 row in set (0.03 sec)
mysql> select 2/0;
+------+
| 2/0 |
+------+
| NULL |
+------+
1 row in set, 1 warning (0.00 sec)
当除数为0时,直接返回了空
二,比较运算符
比较运算符,在结果为真的时候返回1,假的时候返回0
运算符 | 作用 |
---|---|
= | |
<>或!= | 不等于 |
<=> | null安全的等于 |
< | |
<= | |
> | |
>= | |
between | 在指定范围内 |
in | 在指定集合内 |
is null | 为空 |
is not null | |
like | 通配符匹配 |
regexp或rlike | 正则表达式匹配 |
注:=,<>不能用于null比较,<=>可以比较null
mysql> select null=null,null<>null,null<=>null;
+-----------+------------+-------------+
| null=null | null<>null | null<=>null |
+-----------+------------+-------------+
| NULL | NULL | 1 |
+-----------+------------+-------------+
1 row in set (0.00 sec)
between 格式 a between min and max
mysql> select 10 between 9 and 20,9 between 10 and 20;
+---------------------+---------------------+
| 10 between 9 and 20 | 9 between 10 and 20 |
+---------------------+---------------------+
| 1 | 0 |
+---------------------+---------------------+
1 row in set (0.00 sec)
in 格式 a in (value1,value2,...)
mysql> select 'a' in ('a','b','c'),'a' in ('b','c');
+----------------------+------------------+
| 'a' in ('a','b','c') | 'a' in ('b','c') |
+----------------------+------------------+
| 1 | 0 |
+----------------------+------------------+
1 row in set (0.00 sec)
like 格式 a like %abc% 表示a中含有字符串abc
mysql> select 'abc' like '%b','abc' like '%b%','abc' like 'b%';
+-----------------+------------------+-----------------+
| 'abc' like '%b' | 'abc' like '%b%' | 'abc' like 'b%' |
+-----------------+------------------+-----------------+
| 0 | 1 | 0 |
+-----------------+------------------+-----------------+
1 row in set (0.00 sec)
regexp 格式 str regexp str_part,当str字符串中含有str_part时,返回1,否则返回0
mysql> select 'abcd' regexp 'ab','abcd' regexp 'ac';
+--------------------+--------------------+
| 'abcd' regexp 'ab' | 'abcd' regexp 'ac' |
+--------------------+--------------------+
| 1 | 0 |
+--------------------+--------------------+
1 row in set (0.00 sec)
三,逻辑运算符
运算符 | 作用 |
---|---|
not或! | 非 |
and 或&& | 与 |
or 或 || | 或 |
xor | 异或 |
xor表示逻辑异或,当任意一个操作数为null时,返回值为null ,对于非null的操作数,如果两个的逻辑真假值相异,则返回结果1,否则返回0
mysql> select 1 xor 1,1 xor 0,null xor 1;
+---------+---------+------------+
| 1 xor 1 | 1 xor 0 | null xor 1 |
+---------+---------+------------+
| 0 | 1 | NULL |
+---------+---------+------------+
1 row in set (0.00 sec)
四,位运算符
位运算符是将给定的数转化为二进制后,对各个操作数每一位都进行指定的逻辑运算,得到的二进制结果转化为十进制后就是位运算的结果。
运算符 | 作用 |
---|---|
& | 位与(位and) |
| | 位或(位or) |
^ | 位异或(位xor) |
~ | 位取反 |
>> | 位右移 |
<< | 位左移 |
这边我们就对位右移举个例子,其他都类似
如:100>>3 ,100的二进制0001100100右移3位,左边补0,就是0000001100,转换为十进制就是12
mysql> select 100>>3;
+--------+
| 100>>3 |
+--------+
| 12 |
+--------+
1 row in set (0.00 sec)
五,运算符的优先级
优先级顺序 | 运算符 |
---|---|
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 | ! |