Mysql深入学习 基础篇 Ss.03函数

很多东西,你肯等,它就会来

------ 24.3.5

函数

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

1.字符串函数

常见的字符串函数

函数 功能

concat(S1,S2,...Sn) 字符串拼接,将S1,S2,Sn拼接成一个字符串

lower(str) 将字符串str全部转为小写

upper(str) 将字符串str全部转为大写

lpad(str,n,pad) 左填充,用字符串pad对str的左边进行填充,达到n个字符串长度

rpad(str,n,pad) 右填充,用字符串pad对str的右边进行填充,达到n个字符串长度

trim(str) 去掉字符串头部和尾部的空格

substring(str,start,len) 返回从字符串str从start位置起的len个长度的字符串

语法:

select 函数(参数)

示例:

1.-- concat

sql 复制代码
select concat('Hello','MySQL');

HelloMySQL

2.-- lower

sql 复制代码
select lower('Hello');

hello

3.-- upper

sql 复制代码
select upper('Hello');

HELLO

4.-- lpad

sql 复制代码
select lpad('01',5,'*');

***01

5.-- rpad

sql 复制代码
select rpad('01',5,'*');

01***

6.-- trim

sql 复制代码
select trim(' 一切都会好的 我一直相信 ');

一切都会好的 我一直相信

7.-- substring

sql 复制代码
select substring('一切都会好的 我一直相信',4,9);

会好的 我一直相信

案例:

由于业务逻辑需要,企业员工的工号,统一为五位数,不足五位数的用0补齐,例如:一号员工能够工号为00001

sql 复制代码
update emp set workno = lpad(workno,5,'0'); 

2.数值函数

常见的数值函数如下:

函数 功能

ceil(x) 向上取整

floor(x) 向下取整

mod(x,y) 返回x/y的模

rand() 返回0~1之间的随机数

round(x,y) 求参数x的四舍五入的值,保留y位小数

示例:

1.-- ceil(x)

sql 复制代码
select ceil(2.7);

3

2.-- floor(x)

sql 复制代码
select floor(2.7);

2

3.-- mod(x,y)

sql 复制代码
select mod(9,2);

1

4.-- rand()

sql 复制代码
select rand();

5.round(x,y)

sql 复制代码
select round(2.356,2);

2.36

练习

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

sql 复制代码
select lpad(round(rand()*100000,0),6,'0'));

3.日期函数

常见的日期函数如下:

函数 功能

curdate() 返回当前日期

curtime() 返回当前时间

now() 返回当前日期和时间

year(date) 获取指定date的年份

month(date) 获取指定date的月份

day(date) 获取指定date的日期

date_add(date,interval expr type) 返回一个日期/时间值加上一个时间间隔expr后的时间值

datediff(date1,date2) 返回起始时间date1和结束时间date2之间的天数

示例:

1.-- curdate()

sql 复制代码
select curdate();

2.-- curtime()

sql 复制代码
select curtime();

3.-- now()

sql 复制代码
select now();

4.-- year() 5.-- month() 6.-- day()

sql 复制代码
select year(now());

select month(now());

select day(now());

7.-- date_add()

sql 复制代码
select date_add(now(),interval,70 day);

select date_add(now(),interval,70 month);

select date_add(now(),interval,70 year);

8.-- datediff()

sql 复制代码
select datediff('2021-07-23','2024-3-5');

在求两日期差时,datediff()函数是用前面的日期-后面的日期数

案例:

查询所有员工的入职天数,并根据入职天数排序

sql 复制代码
select name, datediff(curdate(),entrydate) as entrydays from emp order by entrydays desc;

4.流程函数

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

函数 功能

if(value,t,f) 如果value为true,则返回t,否则返回f

ifnull(value1,value2) 如果value1不为空,返回value1,否则返回value2

case when val1 then res1 ...else default end 如果val1为true,返回res1,否则返回default默认值

case expr when val1 then res1 ... else default end 如果expr的值等于vall,返回res1,...否则返回default默认值

示例:

1.-- if(value,t,f)

sql 复制代码
select if(false,'ok','error');

2.-- ifnull(value1,value2)

sql 复制代码
select ifnull(null,'error');

error

3.case when val1 then res1 ...else default end

sql 复制代码
select name,(case workaddress when '北京' then '一线城市' when '上海' then '一线城市' else '二线城市') as '工作地址' from emp; 

案例:

统计班级各个学员的成绩,展示的规则如下:

>=85,展示优秀

>=60,展示及格

否则,展示不及格

sql 复制代码
select id,name,(case when math >= 85 then '优秀' when math >= 60 then '及格' else '不及格') as '数学成绩',(case when chinese >= 85 then '优秀' when chinese >=60 then '及格' else '不及格') as '语文成绩',(case when english>=85 then '优秀' when english >=60 then '及格' else '不及格') as '英语成绩' from score;

5.总结

相关推荐
一楼的猫18 分钟前
AI写作检测机制技术深度解析:200+维度检测、叙事指纹与网文AI辅助怎么过审
人工智能·学习·安全·chatgpt·ai写作
报错小能手1 小时前
OpenTenBase学习——分布式数据库 / 集群主流架构分类
学习
灵性(๑>ڡ<)☆2 小时前
Java学习笔记 --面向对象进阶
java·笔记·学习
β添砖java3 小时前
Ollama工具学习
学习
小巧的砖头3 小时前
使用SVN+CruiseControl+ANT实现持续集成之一
学习·算法
俭朴的奇异果4 小时前
MongoDB实战开发 【零基础学习,附完整Asp.net示例】
学习·mongodb·asp.net
承渊政道4 小时前
【Python学习】(了解Python背景知识、搭建 Python 环境以及安装PyCharm)
python·学习·pycharm·搭建python环境
东京老树根4 小时前
SAP学习笔记 - MM模块06 - 库存物料,消耗物料,物料类型NLAG,如何确定会计科目,无物料信息记录(通过物料组),排序字符串,消耗物料的收货
学习
茯苓gao17 小时前
嵌入式开发笔记:CANopen相关移位运算与通信协议术语详解
网络·嵌入式硬件·学习·信息与通信
HERR_QQ20 小时前
强化学习的数学原理 学习笔记
人工智能·笔记·学习·自动驾驶