MySQL学习笔记Day6(函数篇)

还记得在SQL语句中所使用的聚合函数吗?同样的在mysql中也内置了许多可以直接拿来调用的函数,在函数篇里将会一一进行介绍。

字符串函数

一些常用的字符串函数如下:

 语法很简单,直接在select后面加上要使用的函数即可。

比如:

拼接字符串

select concat('Hello', 'MySQL')

 左填充字符串

select lpad('01', 5, '-')

运行结果为:---01

截取字符串

select substring('Hello MySQL', 1, 5)

注意不同于Java,这里的起始索引值是从1开始的,所以运行结果就是Hello。

案例:将emp表中所有员工的工号改成5位数,前面补0。

update emp set workno = lpad(workno, 5, '0')

因为是更新数据,所以使用update函数,再根据对应的语法将字符串函数应用进去即可。

数值函数

一些常见的数值函数如下:

 比如:

取模运算

select mod(7, 4)

运行结果为3。

四舍五入

select round(2.345, 2)

运行结果为2.35。

案例:生成一个六位数的随机码。

分析:首先随机用rand(),但是只能生成0-1的随机数,所以要*1000000。后面的小数不需要,所以用round保留0位小数,还需要注意*1000000的数并不一定是6位数,可能是5位,4位甚至更少,那么需要用lpad或者rpad补齐6位数,这里可以选择补0。

select rpad(round(rand() * 1000000, 0), 6, '0')

于是乎用一句话就完成了6位数验证码的生成。

日期函数

一些常见的日期函数如下:

比如:

获得当前时间的日期:

select YEAR(now())

 当前时间+500个月:

select date_add(now(), INTERVAL 500 MONTH)

案例:查询所有员工的入职天数,并且按照入职天数倒序排序。

select name, datediff(curdate(), emp.entrydate) '入职天数' from emp order by '入职天数' desc

核心在于使用了datediff来求取当前时间和入职时间的差值。

流程函数

一些常用的流程函数如下:

比如:

查询emp表中的员工姓名和工作地址,如果工作地址为北京或者上海,则显示一线城市,其他均显示为二线城市。

select
    name,
    case emp.workaddress when '北京' then '一线城市' when '上海' then '一线城市' else '二线城市' end as '工作地址'
from emp

关键词为case  when  then  else  end。用的是第四种语句。

案例:现有表如下,要求分数>=85显示优秀,>=60显示及格,其余显示不及格。

select
    score.id,
    score.name,
    case when score.math >= 85 then '优秀' when score.math >= 60 then '及格' else '不及格' end '数学成绩',
    case when score.english >= 85 then '优秀' when score.english >= 60 then '及格' else '不及格' end '英语成绩',
    case when score.chinese >= 85 then '优秀' when score.chinese >= 60 then '及格' else '不及格' end '语文成绩'
from score

 这里因为有条件判断语句,所以使用第三种流程函数。输出结果如下。

至此MySQL函数篇就完结了,阶段性成果+1!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值