算数运算符
那么MySQL中都有哪些算数运算符?
+ , - , * , /(DIV) , %(MOD)
- DIV --> division
- MOD --> Model
这里我们将算数运算符分成三部分来讲
第一部分 --> 加减法(+ , - )
- 一个整数类型的值对整数对整数进行加法和减法操作,结果还是一个整数
eg:
SELECT 100+0,100+50
FROM DUAL;
- 运算结果:
- 一个整数类型的值与浮点类型的数进行加法和减法操作,结果是一个浮点数
eg:
SElECT 100+35.5
FROM DUAL;
- 运算结果:
- 在java中,+(加号)两边如果有字符串,那么就表示字符串的拼接,但是在MySQL中 +(加号)只有加法运算的功能,没有字符串拼接的功能,在MySQL中如果在加法中遇到了非数值类型,那就会先尝试将其转换成数值,如果转换失败,则将其按数值0(零)计算
- 在MySQL中+(加号)没有字符串拼接的功能,MySQL中字符串的拼接要通过字符串函数CONCAT()实现
eg1:
SELECT 100+'1'
FROM DUAL;
- 这个时候字符串’1’可以通过转换为数值1
- 这里的字符串转换为数值是通过’隐式转换’
- 运算结果:
eg2:
SELECT 100+'a'
FROM DUAL;
- 这里的字符串’a’是不能转换为数值的,这个时候就会将这个’a’按0(零)来参与运算
- 运算结果:
- +(加号)两边如果有空值(NULL),那么运算结果也为空值(NULL)
- 前面我们讲过,空值参与算数运算之后
eg:
SELECT 100+NULL
FROM DUAL;
- 运算结果:
第二部分 — > 乘除法(* , /(DIV))
- 一个数乘以或除以浮点数之后结果为浮点数
eg:
SELECT 100/1.0
FROM DUAL;
- 运算结果
- 一个数除以整数之后,不管是能不能整除这整数,结果都为一个浮点数,并且保留4位小数
eg:
SELECT 100/2
FROM DUAL;
- 运算结果:
- 一个数除以一个数,当除不尽时,结果为一个浮点数,并且保留四位小数
- 这里要注意: 前面第2点中我们讲过: 一个数除以整数之后不管是否能除尽,结果都为一个浮点数,那么这个是因为什么呐?
- 这里是因为我们一个数除以一个整数的时候,不管这时候能不能整除这个整数,我们都认为除不尽,所以结果才为一个浮点数,并且保留四位小数
eg:
SELECT 100/3
FROM DUAL;
- 这里100除以3本身就是除不尽的,所以结果为一个浮点数,并且保留四位小数
- 运算结果:
eg2:
SELECT 100/2
FROM DUAL;
- 这个时候100除以2本身其实是可以除尽的,但是这个时候我们前面第二条说过,当我们除以一个整数时,这个时候不管除的尽,或者除不尽我们都认为除不尽,所以我们的结果就会是一个浮点数,并且保留4位小数
- 运算结果:
- 一个数除以0之后不会出错(也就是可以执行),执行结果为NULL
eg:
SELECT 100/0
FROM DUAL;
- 运算结果:
补充:除法运算符除了使用/之外还可以使用DIV关键字代替
eg:
SELECT 100 DIV 2
FROM DUAL;
- 这个时候DIV其实就是一个/,和/是等价的
- 运算结果:
第三部分 —> 取模(求余)(%(MOD))
- 取模的结果的符号与被模数符号一致,与模数的符号无关
- 被模数 % 模数
- 比如: 15 % 5 ,那么这里的15就是被模数,5是模数
eg:
SELECT 12 % 5,12 % -5,-12 % -5
FROM DUAL;
- 这里我们前面说过,取模的结果的符号只和被模数符号有关,和模数符号无关,那么12 % 5 结果为 2 , 12 % -5结果就为也为2 , -12 % -5的结果为 -2
- 运行结果:
补充: 取模(求余)运算符除了使用%外,还可以使用MOD关键字代替
eg:
SELECT 12 MOD 5
FROM DUAL;
- 运行结果:
这里我们举一个可以使用取模运算解决的实际问题
eg: 查询员工表中员工id为偶数的员工信息
- 我们分析问题后可以发现,我们要查员工id为偶数的员工信息,我们就要用到WHERE关键字来过滤数据,并且要过滤出偶数,就要用到取模(求余)操作
解决方案:
SELECT *
FROM employees
WHERE employees_id % 2 = 0;
- 这个时候我们就成功过滤出员工id为偶数的记录
总结:
空值(NULL)参与算数运算,结果为空值(NULL)