MySQL-运算符
原创算术运算符
+: 加法运算
-: 减法运算
*: 乘法运算
/: 除法运算,返回商
%: 求余运算,返回余数
例:创建n5表,插入数字100,查看数据表分别查看+、-、*、/、%
mysql> create table n5(
-> num int);
Query OK, 0 rows affected (0.00 sec)
mysql> insert into n5 values(100);
Query OK, 1 row affected (0.00 sec)
mysql> select num, num+3,num-3,num*3,num/3,num%3 from n5;
+------+-------+-------+-------+---------+-------+
| num | num+3 | num-3 | num*3 | num/3 | num%3 |
+------+-------+-------+-------+---------+-------+
| 100 | 103 | 97 | 300 | 33.3333 | 1 |
+------+-------+-------+-------+---------+-------+
1 row in set (0.00 sec)
运算符
作用
=
等于
<=>
安全的等于
<>
不等于,也可写成!=
<=
小于等于
=
大于等于
大于
IS NULL
判断一个值是否为NULL
IS NOT NULL
判断一个值是否不为NULL
LEAST
当有两个或多个参数时,返回最小值
GREATEST
当有两个或多个参数时,返回最大值
BETWEEN AND
判断一个值是否落在两个值之间
ISNULL与IS NULL
作用相同
IN
判断一个值是否是IN列表中的任意一个值
NOT IN
判断一个值是否不是IN列表中的任意一个值
LIKE
通配符匹配
REGEXP
正则表达式匹配
等于运算符 ( = )
等于运算符用来判断数字、字符串和表达式是否相等,如果相等,则返回值为 1 ,否则返回值为 0 ,如果有一个值是 NULL ,则比较结果为 NULL。
mysql> select 1=0,2=2,(1+3)=(2+2),NULL=NULL;
+-----+-------+-------------+-----------+
| 1=0 | 2=2 | (1+3)=(2+2) | NULL=NULL |
+-----+-------+-------------+-----------+
| 0 | 1 | 1 | NULL |
+-----+-------+-------------+-----------+
1 row in set (0.01 sec)
安全等于运算符 ( <=> )
这个操作符和等于运算符(=)的作用一致,只不过多了一个功能,就是可以判断 NULL 值。
mysql> select 1<=>0,2<=>2,(1+3)<=>(2+2),NULL<=>NULL;
+-------+---------+---------------+-------------+
| 1<=>0 | 2<=>2 | (1+3)<=>(2+2) | NULL<=>NULL |
+-------+---------+---------------+-------------+
| 0 | 1 | 1 | 1 |
+-------+---------+---------------+-------------+
1 row in set (0.00 sec)
不等于运算符 ( <> 或 != )
不等于运算符用于判断数字、字符串、表达式是否不相等,如果不相等则返回 1,否则返回 0 ,但是不能判断NULL 值。
mysql> select good<>god,1<>2,4!=4,5.5!=5,NULL<>NULL;
+---------------+------+------+--------+------------+
| good<>god | 1<>2 | 4!=4 | 5.5!=5 | NULL<>NULL |
+---------------+------+------+--------+------------+
| 1 | 1 | 0 | 1 | NULL |
+---------------+------+------+--------+------------+
1 row in set (0.00 sec)
IS NULL 、ISNULL 、IS NOT NULL
-
IS NULL 和 ISNULL 检验一个值是否为 NULL ,如果为 NULL ,返回值为 1,否则返回值为 0。
-
IS NOT NULL 检验一个值是否不为 NULL ,如果不为 NULL ,返回值为 1,否则返回值为 0。
mysql> select null is null,isnull(null),isnull(10),10 is not null; +--------------+--------------+------------+----------------+ | null is null | isnull(null) | isnull(10) | 10 is not null | +--------------+--------------+------------+----------------+ | 1 | 1 | 0 | 1 | +--------------+--------------+------------+----------------+ 1 row in set (0.00 sec)
BETWEEN AND
用于判断一个值是否落在两个值之间
mysql> select 4 between 2 and 5,4 between 4 and 6, 12 between 9 and 10;
+-------------------+-------------------+---------------------+
| 4 between 2 and 5 | 4 between 4 and 6 | 12 between 9 and 10 |
+-------------------+-------------------+---------------------+
| 1 | 1 | 0 |
+-------------------+-------------------+---------------------+
1 row in set (0.00 sec)
LEAST 、GREATEST
-
LEAST :当有两个或多个参数时,返回最小值,如果有一个值是 NULL ,则返回结果为 NULL
-
GREATEST :当有两个或多个参数时,返回最大值,如果有一个值是 NULL ,则返回结果为 NULL
mysql> select least(2,0),least(a,c,b),least(10,null),greatest(2,0),greatest(10,null); +------------+--------------------+----------------+---------------+-------------------+ | least(2,0) | least(a,c,b) | least(10,null) | greatest(2,0) | greatest(10,null) | +------------+--------------------+----------------+---------------+-------------------+ | 0 | a | NULL | 2 | NULL | +------------+--------------------+----------------+---------------+-------------------+ 1 row in set (0.00 sec)
IN 、NOT IN
-
IN :判断一个值是否是 IN 列表中的任意一个值
-
NOT IN :判断一个值是否不是 IN 列表中的任意一个值
mysql> select 2 in (1,3,5), 2 not in (1,3,5); +--------------+------------------+ | 2 in (1,3,5) | 2 not in (1,3,5) | +--------------+------------------+ | 0 | 1 | +--------------+------------------+ 1 row in set (0.00 sec)
LIKE
-
LIKE 运算符用来匹配字符串,如果匹配则返回 1,如果不匹配则返回 0
-
LIKE 使用两种通配符:% 用于匹配任何数目的字符,包括零字符 ; _ 只能匹配一个字符
mysql> SELECT stud LIKE stu_, stud LIKE s_, stud LIKE %d; +--------------------+--------------------+------------------+ | stud LIKE stu | stud LIKE s | stud LIKE %d | +--------------------+--------------------+------------------+ | 1 | 1 | 1 | +--------------------+--------------------+------------------+ 1 row in set (0.00 sec)
REGEXP
-
REGEXP 运算符用来匹配字符串,如果匹配则返回 1,如果不匹配则返回 0
-
REGEXP 使用几种通配符:
^ 用于匹配以什么开头的字符串
$ 用于匹配以什么结尾的字符串
. 用于匹配任何一个单字符串
[...] 用于匹配在方括号内的任何字符
- 用于匹配零个或多个在它前面的字符
mysql> SELECT ssky REGEXP ^s, ssky REGEXP y$, ssky REGEXP .sky, ssky REGEXP [ab];
+--------------------+--------------------+----------------------+-----------------------+
| ssky REGEXP ^s | ssky REGEXP y$ | ssky REGEXP .sky | ssky REGEXP [ab] |
+--------------------+--------------------+----------------------+-----------------------+
| 1 | 1 | 1 | 0 |
+--------------------+--------------------+----------------------+-----------------------+
1 row in set (0.00 sec)
逻辑运算符
运算符
作用
NOT或!
逻辑非
AND或&&
逻辑与
OR或||
逻辑或
XOR
逻辑异或
逻辑非 ( NOT 或 !)
-
当操作数为 0 时,所得值为 1
-
当操作数为非 0 时,所得值为 0
-
当操作数为 NULL 时,所得值为 NULL
mysql> SELECT NOT 10, !10, NOT (1-1), !(1-1), NOT 1+1, NOT NULL; +--------+-----+-----------+--------+---------+----------+ | NOT 10 | !10 | NOT (1-1) | !(1-1) | NOT 1+1 | NOT NULL | +--------+-----+-----------+--------+---------+----------+ | 0 | 0 | 1 | 1 | 0 | NULL | +--------+-----+-----------+--------+---------+----------+ 1 row in set (0.04 sec)
逻辑与 ( AND 或 && )
-
当所有操作数均为非零值、并且不为 NULL 时,所得值为 1
-
当一个或多个操作数为 0 时,所得值为 0
-
其余情况所得值为 NULL
mysql> SELECT 1 AND -1, 1 && 0, 0 AND NULL, 1 && NULL; +----------+--------+------------+-----------+ | 1 AND -1 | 1 && 0 | 0 AND NULL | 1 && NULL | +----------+--------+------------+-----------+ | 1 | 0 | 0 | NULL | +----------+--------+------------+-----------+ 1 row in set (0.00 sec)
逻辑或 ( OR 或 || )
-
当两个操作数均为非 NULL 值,且任意一个操作数为非零值时,结果为 1 ,否则为 0
-
当有一个操作数为 NULL ,且另一个操作数为非零值时,则结果为 1 ,否则结果为 NULL
-
当两个操作数均为 NULL 时,则所得结果为 NULL
mysql> SELECT 1 OR -1 OR 0, 1 || 2, 0 OR NULL, NULL || NULL; +--------------+--------+-----------+--------------+ | 1 OR -1 OR 0 | 1 || 2 | 0 OR NULL | NULL || NULL | +--------------+--------+-----------+--------------+ | 1 | 1 | NULL | NULL | +--------------+--------+-----------+--------------+ 1 row in set (0.01 sec)
逻辑异或 ( XOR )
-
a XOR b 的计算等同于 ( a AND (NOT b) ) 或 ( (NOT a) AND b )
-
当任意一个操作数为 NULL 时,返回值为 NULL
-
对于非 NULL 的操作数,如果两个操作数都是非 0 值或者都是 0 值,则返回结果为 0
-
如果一个为 0 值,另一个为非 0 值,返回结果为 1
mysql> SELECT 1 XOR 1, 0 XOR 0, 1 XOR 0, 1 XOR NULL, 1 XOR 1 XOR 1; +---------+---------+---------+------------+---------------+ | 1 XOR 1 | 0 XOR 0 | 1 XOR 0 | 1 XOR NULL | 1 XOR 1 XOR 1 | +---------+---------+---------+------------+---------------+ | 0 | 0 | 1 | NULL | 1 | +---------+---------+---------+------------+---------------+ 1 row in set (0.02 sec)
位运算符
运算符
作用
|
位或
&
位与
^
位异或
<<
位左移
位右移
~
位取反
位或运算符 ( | )
对应的二进制位有一个或两个为 1 ,则该位的运算结果为 1 ,否则为 0
mysql> select 10|15,9|4|2;
+-------+-------+
| 10|15 | 9|4|2 | # 10的二进制为1010,15的二进制为1111,按位或运算之后结果为1111,即15
+-------+-------+ # 9的二进制为1001,4为0100,2的二进制为0010,按位或运算之后1111
| 15 | 15 |
+-------+-------+
1 row in set (0.00 sec)
位与运算符 ( & )
对应的二进制位都为 1 ,则该位的运算结果为 1 ,否则为 0
mysql> SELECT 10&15,9&4&2;
+-------+-------+
| 10&15 | 9&4&2 |
+-------+-------+
| 10 | 0 |
+-------+-------+
1 row in set (0.00 sec)
位异或运算符 ( ^ )
对应的二进制位不相同时,结果为 1 ,否则为 0
mysql> SELECT 10^15,1^0,1^1;
+-------+-----+-----+
| 10^15 | 1^0 | 1^1 |
+-------+-----+-----+
| 5 | 1 | 0 |
+-------+-----+-----+
1 row in set (0.00 sec)
位左移运算符 ( << )
使指定的二进制位都左移指定的位数,左移指定位之后,左边高位的数值将被移出并丢弃,右边低位空出的位置用 0 补齐
mysql> select 1<<2,4<<2;
+------+------+
| 1<<2 | 4<<2 | # 1的二进制值为00000001,左移两位之后变成00000100,即十进制数4
+------+------+
| 4 | 16 | # 4的二进制值为00000100,左移两位之后变成00010000,即十进制数16
+------+------+
1 row in set (0.00 sec)
位右移运算符 ( >> )
使指定的二进制位都右移指定的位数,右移指定位之后,右边低位的数值将被移出并丢弃,左边高位空出的职位用 0 补齐
mysql> select 1>>1, 16>>2;
+------+-------+
| 1>>1 | 16>>2 |
+------+-------+
| 0 | 4 |
+------+-------+
1 row in set (0.00 sec)
位取反运算符 ( ~ )
将对应的二进制数逐位反转,即 1 取反后变 0 , 0 取反后变 1
mysql> select 5 &~1;
+-------+
| 5 &~1 |
+-------+
| 4 |
+-------+
1 row in set (0.00 sec)
版权声明
所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除