1.数值类型的函数
## mod 求余
SELECT 10%3;
SELECT MOD(10,3);
##ceil() 向上取整
SELECT CEIL(-10.1);
##floor() 向下取整
SELECT FLOOR(-10.1);
##round() 四舍五入
# round(值) 四舍五入取整
SELECT ROUND(10.6);
# round(值,保留小数位) 四舍五入
SELECT ROUND(10.6161,2);
#sign(值) 返回这数值的符号: 正数: 1 负数: -1 零: 0
SELECT SIGN(sal-1000) FROM emp ;
#产生一个随机数
# 2~10 随机整数
SELECT FLOOR(RAND()*9+2);
2.字符函数
SELECT 'abc'+'hello';
## 获取名字由5个字符组成的
## length(列名|字符串) 获取字符串长度
SELECT * FROM stu WHERE LENGTH(sname) = 5;
#字符串连接
SELECT CONCAT('hello','world','123')
## 把员工的姓名与岗位连在一起,使用-分割
SELECT CONCAT(ename,'-',job) FROM emp;
# 替换指定个数的字符:
#INSERT(列名/值,开始位置,个数,替换的值)
#开始位置从1开始
# hello 替换 指定位置
SELECT INSERT('hello',3,2,'hh');
#replace() 替换 指定字符 全替换
SELECT REPLACE('helloworldll','ll','dd');
#插入
SELECT INSERT('hello',3,0,'hh');
#删除
SELECT INSERT('hello',3,2,'');
#截取
# substring(字符串|列, 开始位置) 从开始位置截取到字符串末尾
SELECT SUBSTRING('hello',2)
# substring(字符串|列, 开始位置,截取的长度) 从开始位置截取指定长度
SELECT SUBSTRING('hellosfsdf',2,4)
#left(字符串|列, 长度) 等同 substring(字符串|列, 1,截取的长度)
#从左往右截取
SELECT LEFT('hellosfsdf',2);
SELECT SUBSTRING('hellosfsdf',1,2)
#right(字符串|列, 长度) 从右往左截取
SELECT RIGHT('hellosfsdf',2);
#trim() 去左右空格
SELECT TRIM(' hello sfsdf ');
#REVERSE() 反转
SELECT REVERSE('hello');
3.日期函数
#得到当前系统日期
# curdate
SELECT CURDATE();
SELECT CURRENT_DATE();
#得到当前系统时间
SELECT CURTIME();
#得到当前系统日期加时间
# now()
SELECT NOW();
#sysdate
SELECT SYSDATE();
#获取日期的指定部分值
SELECT YEAR(NOW());
SELECT MONTH(NOW());
SELECT DAYOFMONTH(NOW());
SELECT DAYNAME(NOW());
SELECT DAYOFWEEK(NOW());
#日期相加adddate(日期,天数)
SELECT ADDDATE(NOW(),200);
#日期相减: SUBDATE()
SELECT SUBDATE(NOW(),200);
#两个日期相隔的天数 datediff(日期1,日期2)
#日期1-日期2
SELECT DATEDIFF(NOW(),'2008-8-8');
SELECT DATEDIFF(NOW(),'1990-12-12');
#SimpleDateFormat
SELECT DATE_FORMAT(NOW(),'%Y年%m月%d日');
#获取月中最后一天的日期 LAST_DAY(日期)
SELECT LAST_DAY('2020-02-01');
4.if
# if(条件, 值1,值2)
# if-else 条件为true, 返回值1,否则返回值2
#查询员工的薪水情况: >1000 正常工资 <=1000 低工资
SELECT e.*,IF(sal >1000,'正常工资','低工资') 薪资情况 FROM emp e;
# case if --else if --else if ... --else
/*
case
when 条件 then 值1
when 条件 then 值2
....
else 值n
end
*/
## 查询员工的薪水情况: >=3000 高工资 3000> >=1000 中等工资 <1000 低工资
SELECT e.*, CASE
WHEN sal >=3000 THEN '高工资'
WHEN sal >=1000 THEN '中等工资'
ELSE '低工资'
END 薪水情况
FROM emp e;