mysql之函数

目录

一、函数定义

二、常用函数

1、日期函数

①now():获取当前日期和时间

②day():获取日期中的天

③month():获取日期中的月

④year():获取日期中的年

⑥日期转换函数DATE_FORMAT()/STR_TO_DATE()

⑦案例

2、字符串函数

①upper()/lower():大小写互换

②replace();搜索并替换字符串中的字符串

③substring():从具有特定长度的位置开始的最后一个字符

④trim():去除前后空格

⑤length():获取字符串长度

⑥concat():合并字符串函数,返回结果为多个连接参数的字符串,参数可以是一个或多个

3、数字函数

三、条件判断函数

①if(expr,v1,v2);

②ifnull(expr,v1,v2);

四、合并(union)

①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

③前提条件:

结果集列个数相同,列的类型还要相同或兼容

④使用场景:

在项目统计报表模块,用来合并数据

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值