【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;

总结

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

相关推荐
山人在山上5 分钟前
arcgis server ip修改后服务异常解决方案
数据库·tcp/ip·arcgis
编程洪同学24 分钟前
Spring Boot 中实现自定义注解记录接口日志功能
android·java·spring boot·后端
不剪发的Tony老师27 分钟前
SQL实现新年倒计时功能
数据库·sql
小小药34 分钟前
009-spring-bean的实例化流程
java·数据库·spring
DashVector1 小时前
如何通过HTTP API插入或更新Doc
大数据·数据库·数据仓库·人工智能·http·数据库架构·向量检索
hac13221 小时前
瀚高数据库
数据库
小小小妮子~1 小时前
深入理解 MySQL 架构
数据库·mysql·架构
man20172 小时前
【2024最新】基于Python+Mysql+django的水果销售系统Lw+PPT
数据库·mysql·django
度假的小鱼2 小时前
01 Oracle 基本操作
数据库·oracle
张声录12 小时前
【ETCD】【实操篇(十)】基于 ETCD 实现一个简单的服务注册及发现功能
数据库·etcd