跳至主要內容

MySQL算术运算符

大约 6 分钟约 1783 字

算术运算符

算术运算符是MySQL中最常用的一种运算符。MySQL中支持的运算符如下表。

符号作用符号作用
+加法运算%求余运算
-减法运算DIV除法运算,返回商,同“/”
*乘法运算MOD求余运算,返回余数,同”%“
/除法运算

加减乘运算符可以同时运算多个操作数。除号和求余运算符也可以同时运算多个操作数,但不建议使用。DIV和MOD这两个运算符只有两个参数,进行除法和求余的运算时,若x2为空值则会返回NULL。

使用加减乘除和求余计算两个操作数的结果

我们首先创建一个表,然后创建两列,第一个操作数为7,第二个操作数为2,然后计算,查看结果。

(下面代码中insert语句和select语句后面会讲到)

create table demo (num1 int,num2 int);
insert into demo (num1,num2) values (7,2);
select num1,num2,num1+num2,num1-num2,num1*num2,num1/num2,num1%num2 from demo;
运行结果
运行结果

比较运算符

比较运算符在查询数据时常用的一种运算符,SELECT语句中经常用到比较运算符。MySQL中常用的比较运算符如下表。

符号名称示例符号名称示例
=等于id=5is not nulln/aid is not null
>大于id>5between andn/aid between 1 and 5
<小于id<5inn/aid in (3,4,5)
>=大于等于id>=5not inn/aid not in (3,4,5)
<=小于等于id<=5like模式匹配name like (‘shi%’)
!= <>不等于id!=5not like模式匹配name not like (‘shi%’)
is nulln/aid is nullregexp常规表达式name 正则表达式

下面对常用的比较运算符进行详解。

在进行演示前,我们先创建如下的数据表,并且输入如图的数据。

运行结果
运行结果
  1. 运算符“=”

它用来判断数字、字符串和表达式是否相等。如果相等返回1;否则返回0。如:

select * from tb_demo where id = 1;
运行结果
运行结果
  1. 运算符“<>”和“!=”

这两个不等于符号可以用来判断数字、字符串和表达式等是否不相等,如果不相等则返回1;否则返回0。如:

select * from tb_demo where id != 1;
运行结果
运行结果
  1. 运算符“>”

大于号可以用来判断左边的操作数是否大于右边的操作数。如:

select * from tb_demo where id > 2;
运行结果
运行结果

“<”、“>=”、“<=”等的用法与“>”基本相同,这里不再赘述。

  1. 运算符 IS NULL

IS NULL用于判断操作是否是空值,操作数为空值时结果返回1,否则返回0。如:

select * from tb_demo where username is NULL;
运行结果
运行结果
  1. 运算符 BETWEEN AND

BETWEEN AND运算符用于判断数据是否在某个取值范围内,表达式如下:

x BETWEEN x1 AND x2

若x大于x1小于x2则返回1,否则返回0。如:

select * from tb_demo where id between 1 and 3;
运行结果
运行结果
  1. 运算符IN

IN用于判断数据是否存在于某个集合中,表达式如下:

x IN (x1,x2,...,xn)

若x的值等于序列中的任意一个则返回1,否则返回0。如

select * from tb_demo where username in ('ab','abc','abcd');
运行结果
运行结果
  1. 运算符 LIKE

LIKE可用于匹配字符串,表达式如下:

x LIKE s

若x与s匹配则返回1,否则返回0。如:

select * from tb_demo where password like '%bcde';
运行结果
运行结果
  1. 运算符REGEXP

REGEXP同样用于匹配字符串,但其使用的是正则表达式,表达式如下:

x REGEXP s

若x满足s表示的匹配方式则返回1,否则返回0。如:

select * from tb_demo where password regexp '^a';
运行结果
运行结果

逻辑运算符

逻辑运算符用来判断表达式的真假,若表达式为真则返回1,否则返回0。MySQL中支持四种逻辑运算符:与(&&或AND)、非(!或NOT)、或(||或OR)、异或(XOR)。下面分别介绍这四种运算符。

  1. 与运算

“&&”和AND是与运算的两种表达方式。如果所有数据不为0且不为空值NULL,结果返回1;如果存在任何一个数据为0,结果返回0;如果有一个数据为NULL且没有数据为0时返回NULL。可以有多个操作数同时进行与运算。

  1. 或运算

“||”或者OR表示或运算。所有数据中存在任何一个数据为非0的数字时返回1;如果数据中不包含非0的数字但包含NULL,结果返回NULL;如果数据中有结果返回0。可以有多个操作数同时进行或运算。

  1. 非运算

“!”或者NOT表示非运算。通过非运算,表达式会返回一个与操作数据相反的结果。若数据为非0的数字则结果返回0;若数据为0则结果返回1;若操作数是NULL则返回NULL。

  1. 异或运算

XOR表示异或运算,只要其中任何一个操作数为NULL则结果返回NULL;若两个操作数都为非0值则结果返回0;若两个操作数有一个不为0则结果返回1。

如:

运行结果
运行结果

位运算符

MySQL中的位运算符如下:

符号作用
&按位与。先将十进制数转换成二进制数,然后对每个位的数进行按位与运算,1和1相与得1,与0相与得0,最后再将二进制数转换为十进制数
|按位或。先将十进制数转换成二进制数,然后对每个位的数进行按位或运算,1和任何数相或都是1,0与0相或为0,最后再将二进制数转换为十进制数
~按位取反。先将十进制数转换成二进制数,然后对每一位上的数进行取反操作,0取反为1,1取反为0,然后再将二进制数转换为十进制数
^按位异或。先将十进制数转换为二进制数,然后对每位数都进行按位异或运算,相同的数异或之后是0,不同的数异或之后是1,然后再将二进制数转换成十进制数
<<按位左移。将左操作数的二进制数向左移动右操作数位,右边补0,最后转换为十进制数
>>按位右移。将左操作数的二进制数向右移动右操作数位,左边补0,最后转换为十进制数

如将4和6分别进行按位与、按位或、按位异或运算,将4进行按位取反运算。

运行结果
运行结果

运算符优先级

运算符优先级如下表。

优先级符号
1!
2~
3^
4*,/,DIV,%,MOD
5+,-
6>>,<<
7&
8|
9=,<=>,>,>=,<,<=,!=,<>,IN,IS,NULL.LIKE,REGEXP
10BETWEEN,AND,CASE,WHEN,THEN,ELSE
11NOT
12&&,AND
13||,OR,XOR
14:=
上次编辑于:
贡献者: QI