【MySQL】函数

【MySQL】函数


文章目录


前言

本篇文章将讲到MySQL常用的字符串函数,数值函数,日期函数,流程函数。


一、字符串函数

MySQL中内置了很多字符串函数,常用的几个如下:

示例:

A. concat : 字符串拼接

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

B. lower : 全部转小写

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

C. upper : 全部转大写

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

D. lpad : 左填充

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

E. rpad : 右填充

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

F. trim : 去除空格

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

G. substring : 截取子字符串

sql 复制代码
select substring('Hello MySQL',1,5);

二、数值函数

常见的数值函数如下:

示例:

A. ceil:向上取整

sql 复制代码
select ceil(1.1);

B. floor:向下取整

sql 复制代码
select floor(1.9);

C. mod:取模

sql 复制代码
select mod(7,4);

D. rand:获取随机数

sql 复制代码
select rand();

E. round:四舍五入

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

案例:

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

思路: 获取随机数可以通过rand()函数,但是获取出来的随机数是在0-1之间的,所以可以在其基础

上乘以1000000,然后舍弃小数部分,如果长度不足6位,补0

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

三、日期函数

常见的日期函数如下:

示例:

A. curdate:当前日期

sql 复制代码
select curdate();

B. curtime:当前时间

sql 复制代码
select curtime();

C. now:当前日期和时间

sql 复制代码
select now();

D. YEAR , MONTH , DAY:当前年、月、日

sql 复制代码
select YEAR(now()); 
select MONTH(now()); 
select DAY(now());

E. date_add:增加指定的时间间隔

sql 复制代码
select date_add(now(), INTERVAL 70 YEAR );

F. datediff:获取两个日期相差的天数

sql 复制代码
select datediff('2021-10-01', '2021-12-01');

案例:

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

思路: 入职天数,就是通过当前日期 - 入职日期,所以需要使用datediff函数来完成。

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

四、流程函数

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

示例:

A. if

sql 复制代码
select if(false, 'Ok', 'Error');

B. ifnull

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

C. case when then else end

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

案例:

create table score(

id int comment 'ID',

name varchar(20) comment '姓名',

math int comment '数学',

english int comment '英语',

chinese int comment '语文'

) comment '学员成绩表';

insert into score(id, name, math, english, chinese) VALUES (1, 'Tom', 67, 88, 95 ), (2, 'Rose' , 23, 66, 90),(3, 'Jack', 56, 98, 76);

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

总结

到这里这篇文章的内容就结束了,谢谢大家的观看,如果有好的建议可以留言喔!

相关推荐
acrel75 分钟前
医院用电隐患治理与节能降耗及智慧能源平台应用
网络·数据库
snow@li28 分钟前
PowerDesigner 全景教程:从业务建模、表结构设计、关系管理到正向/逆向、文档输出
数据库
ss27332 分钟前
PostgreSQL表级锁、行级锁、轻量级锁
数据库·postgresql·区块链
RacentCLM1 小时前
证书即服务CaaS:从申请、续期到部署的自动化链路拆解
运维·数据库·自动化·ssl
SelectDB1 小时前
安全评审卡了三周,我把部署形态的四种选项重新排了一遍
大数据·数据库·云原生
十年程序梦2 小时前
2026最新国内省市区县表,mysql表格
mysql
Random Glow3 小时前
二级索引与回表:一次回表到底多贵
数据库·mysql·性能优化·innodb·索引
CarIise3 小时前
JDBC 与数据库事务核心
数据库·笔记
见闻小天地3 小时前
新手入门:印刷包装设备的伺服和PLC运动控制方案各管什么?七步选型讲清楚
运维·网络·数据库·人工智能