SQL--函数

SQL--函数

函数是什么?

函数是指一段可以直接被另一段程序调用的程序或代码。

字符串函数

image-20230811182252682

select concat('hello','mysql');
select lower('Hello');
select upper('Hello');
select lpad('01',5,'-');
select rpad('01',5,'-');
select trim('    hello mysql  ');
select substr('Hello Mysql',1,5);

注意substr中第二项中的下标从1开始,第三个参数为截取的长度

--1,由于业务需求变更,企业员工的工号,统一5位数,目前不足巧位数的全部在前面补0。比如:1号员工的工号应该00001。

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

数值函数

image-20230811183929138

# ceil向上取整
select ceil(1.1);
# floor向下取整
select floor(1.9);
# mod模运算
select mod(7,4);
# rand 生成0-1的随机数
select rand();
# round  四舍五入,保留y位小数
select round(1.878,2);
select round(2.345,2);
select round(2.344,2);

通过数据库的函数,生成一个六位数的随机验证码。

# 通过数据库的函数,生成一个六位数的随机验证码。
# 先生成6位随机数,如过不为6位就在前面或者后面补0
select lpad(round(rand()*1e6,0),6,'0');

日期函数

# ceil向上取整
select ceil(1.1);
# floor向下取整
select floor(1.9);
# mod模运算
select mod(7,4);
# rand 生成0-1的随机数
select rand();
# round  四舍五入,保留y位小数
select round(1.878,2);
select round(2.345,2);
select round(2.344,2);

# 通过数据库的函数,生成一个六位数的随机验证码。
# 先生成6位随机数,如过不为6位就在前面或者后面补0
select lpad(round(rand()*1e6,0),6,'0');

# 日期函数
# curdate 当前日期
select curdate();
#  curtime 当前时间
select curtime();
# now 当前的日期加时间
select now();
# year month day
select year(now());
select month(now());
select day(now());
# data_add
# 向后70天
 select date_add(now(),interval 70 day );
# 向后70月
 select date_add(now(),interval 70 month );
# 向后70年
 select date_add(now(),interval 70 year );
# datediff 两个日期之间的差值
# 前面的时间减后面的时间
select datediff('2021-10-01','2021-12-01');

--案例:查询所有员工的入职数,并根据入职天数倒序排序。

select name,datediff(curdate(),entrydate) as entrydays from emp order by entrydays desc ;

流程函数

流程函数也是很常用的一类函数,可以在SQL语句中实现条件筛选,从而提高语句的效率。

image-20230812095135948

统计班级各个学员的成绩,展示的规则如下:
>=85,展示优秀=60,展示及格.否则,展示不及格

# 流程控制函数
# if
select if(true,'ok','error');
select if(false,'ok','error');
# ifnull 判断某个值是否为空
select ifnull('ok','default');
select ifnull(' ','default');
select ifnull(NULL,'default');

# case when then else end
# eee。
# 需求:查em印表的员工姓名和工作地址北京/上海->一线城市,其他->二线城)
select workno , name, case workaddress when '北京' then '一线城市' when '上海' then '一线城市' else '二线城市' end from emp;
select id,name,case when math>=85 then'优秀' when math >=60 then '及格' else '不及格' end as '数学', case when english>=85 then'优秀' when english >=60 then '及格' else '不及格' end as '英语',
case when chinese>=85 then'优秀' when chinese >=60 then '及格' else '不及格' end as '语文'
from score;

SQL-函数小结

image-20230812101440356

posted @ 2023-08-11 21:23  harper886  阅读(49)  评论(0)    收藏  举报