MySQL单组函数之数值函数

#数值函数

/*
ROUND: 四舍五入
ROUND(45.926, 2)			45.93
TRUNCATE: 截断
TRUNCATE(45.926)      		45
MOD: 求余
MOD(1600, 300)		          100
*/
SELECT ROUND(45.926,2),ROUND(45.926,1),
	ROUND(45.926,0),ROUND(45.926,-1);
	
	
SELECT TRUNCATE(45.926,2),TRUNCATE(45.926,1),
	TRUNCATE(45.926,0),TRUNCATE(45.926,-1);
	
#注意:结果的正负和被模数的正负有关
SELECT MOD(5,3),MOD(-5,3),MOD(5,-3),MOD(-5,-3);



/*
通用函数:
	ifnull(字段名,值) :
		当字段中的内容为Null时,那么就用后面的值进行替换
*/
SELECT commission_pct,IFNULL(commission_pct,1)
FROM employees;

#求所有员工的奖金
SELECT salary*IFNULL(commission_pct,0)
FROM employees;

 

/*
case表达式:

格式:
	第一种写法:
	case 字段值
		when 值1 then 返回值1
		when 值2 then 返回值2
		when 值3 then 返回值3
		else
			返回值other
	end

	第二种写法(很少用)
	case 
		when 表达式1 then 返回值1
		when 表达式2 then 返回值2
		when 表达式3 then 返回值3
		else
			返回值other
	end
*/
/*
需求: 练习:查询部门号为 10, 20, 30 的员工信息, 若部门号为 10, 
则打印其工资的 1.1 倍, 20 号部门, 则打印其工资的 1.2 倍, 
30 号部门打印其工资的 1.3 倍数

*/

SELECT department_id,salary,
	CASE department_id
		WHEN 10 THEN salary*1.1
		WHEN 20 THEN salary*1.2
		WHEN 30 THEN salary*1.3
	END AS "new_salary"
FROM employees
WHERE department_id IN(10,20,30);

/*
需求:部门号大于80的部门的员工的薪水乘以2,
	等于80号部门乘以3
	其它薪水则乘以4
*/
SELECT department_id,salary,
	CASE
		WHEN department_id > 80 THEN salary * 2
		WHEN department_id = 80 THEN salary * 3
		ELSE
			salary*4
	END AS "new_salary"
FROM employees;

 

#ABS(x) 返回x的绝对值
SELECT ABS(-1),(8);	
/*CEIL(x)/CEILING(x) 返回大于或等于 x 的最小整数
#FLOOR(x) 返回小于或等于 x 的最大整数
EXP(x) 返回 e 的 x 次方
GREATEST(expr1, expr2, expr3, …) 返回列表中的最大值
LEAST(expr1, expr2, expr3, …) 返回列表中的最小值
*/
SELECT CEIL(4.5),FLOOR(4.5),CEIL(-4.5),FLOOR(-4.5),EXP(3), GREATEST(3, 12, 34, 8, 25),LEAST(3, 12, 34, 8, 25)
SELECT e.`salary`,CEIL(e.`salary`) FROM employees e

/*
LN 返回数字的自然对数
LOG(x) 返回自然对数(以 e 为底的对数)
POW(x,y)/POWER(x,y)返回 x 的 y 次方
RAND()返回 0 到 1 的随机数   返回 0 到 1 的随机数,若()里面有数字,RAND(x),x相同时,返回值相同
ROUND(x)返回离 x 最近的整数
TRUNCATE(x,y)返回数值 x 保留到小数点后 y 位的值(与 ROUND 最大的区别是不会进行四舍五入)
*/
SELECT LN(2), LOG(20.085536923188),POW(2,3),POWER(2,3),RAND(),RAND(8),ROUND(4.54),TRUNCATE(1.23456,3);

/*
SIGN(x)返回 x 的符号,x 是负数、0、正数分别返回 -1、0 和 1
SQRT(x)返回x的平方根
*/
SELECT SIGN(-10),SIGN('您好啊'),SQRT(25),SQRT(5);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值