目录
⑥日期转换函数DATE_FORMAT()/STR_TO_DATE()
③substring():从具有特定长度的位置开始的最后一个字符
⑥concat():合并字符串函数,返回结果为多个连接参数的字符串,参数可以是一个或多个
①union:将所有的查询结果合并到一起,然后去除相同的记录
②union all:将所有的查询结果合并到一起,不能去除相同的记录
一、函数定义
1、类似java定义方法
2、可以带参数
3、必须有返回值(一行一列),重点:java方法可以没有返回值,数据库函数必须要有返回值
4、函数可以镶嵌到sql语句中 注:存储过程不可以
5、函数可以镶嵌调用
二、常用函数
1、日期函数
①now():获取当前日期和时间
select now();
②day():获取日期中的天
select day();
③month():获取日期中的月
select month();
④year():获取日期中的年
select year();
⑥日期转换函数DATE_FORMAT()/STR_TO_DATE()
日期转字符串
select now(),DATE_FORMAT(now(),'%Y年%m月%d日')
字符串转日期
select STR_TO_DATE('2022-06-08','%Y-%m-%d')
⑦案例
案例1:查询各学生年龄,只按年份来算
select s.*,year(now())-year(s.sage) from t_mysql_student s;
案例2:按照出生日期来算,当前月日<出生年月日则,年龄减一
select s.*,year(now())-year(s.sage), if(month(now())<month(s.sage),-1,0) from t_mysql_student s;
案例3:查询本月过生日的学生
select*from t_mysql_student where month(now()) = month(s.sage);
案例4:查询下月过生日的学生
select*from t_mysql_student where month(now())+1 = month(s.sage);
select*from t_mysql_student where date_add(now(),interval 1 month) = month(s.sage);
2、字符串函数
①upper()/lower():大小写互换
select upper('dd');
select lower('DD');
②replace();搜索并替换字符串中的字符串
select uuid(),replace(uuid(),'-','');
③substring():从具有特定长度的位置开始的最后一个字符
select substring('sfsfsfdsd',1,5);
select substring('sfsfsfdsd',5);
④trim():去除前后空格
⑤length():获取字符串长度
select length(' sgdffd '),length(trim(' sgdffd '));
⑥concat():合并字符串函数,返回结果为多个连接参数的字符串,参数可以是一个或多个
3、数字函数
①floor:向下取整
②ceil:向上取整
③round:四舍五入
select floor(-3.14),floor(3.14),ceil(-3.14),ceil(3.14);
结果:-4,3,-3,4
三、条件判断函数
①if(expr,v1,v2);
如果expr是true则返回v1,否则返回v2
行列转换
select
s.sid,s.sname,
sum(if(sc.cid='01',sc.score,0)) 语文,
sum(if(sc.cid='02',sc.score,0)) 数学,
sum(if(sc.cid='03',sc.score,0)) 英语,
from
t_mysql_student s left join t_mysql_score sc on s.sid = sc.sid
group by s.sid,s.sname;
②ifnull(expr,v1,v2);
如果expr是null则返回v1,否则返回v2
四、合并(union)
①union:将所有的查询结果合并到一起,然后去除相同的记录
select 1,'zs',18 union select 2,'zs',22 union select 2,'zs',2
结果:
1 zs 18
2 ls 22
②union all:将所有的查询结果合并到一起,不能去除相同的记录
select 1,'zs',18 union select 2,'zs',22 union select 2,'zs',2
结果:
1 zs 18
2 ls 22
2 ls 22
③前提条件:
结果集列个数相同,列的类型还要相同或兼容
④使用场景:
在项目统计报表模块,用来合并数据