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

总结

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

相关推荐
星霜笔记1 小时前
Docker 部署 MariaDB+phpMyAdmin+Nextcloud 完整教程
运维·数据库·docker·容器·mariadb
poemyang5 小时前
十年大厂员工终明白:MySQL性能优化的尽头,是对B+树的极致理解
mysql·pagecache·顺序i/o·局部性原理·b tree·b+ tree
wyiyiyi7 小时前
【Web后端】Django、flask及其场景——以构建系统原型为例
前端·数据库·后端·python·django·flask
天宇_任7 小时前
Mysql数据库迁移到GaussDB注意事项
数据库·mysql·gaussdb
安卓开发者8 小时前
Android RxJava 组合操作符实战:优雅处理多数据源
android·rxjava
阿华的代码王国8 小时前
【Android】RecyclerView复用CheckBox的异常状态
android·xml·java·前端·后端
一条上岸小咸鱼8 小时前
Kotlin 基本数据类型(三):Booleans、Characters
android·前端·kotlin
Jerry说前后端8 小时前
RecyclerView 性能优化:从原理到实践的深度优化方案
android·前端·性能优化
alexhilton9 小时前
深入浅出着色器:极坐标系与炫酷环形进度条
android·kotlin·android jetpack
xiep143833351010 小时前
Ubuntu 安装带证书的 etcd 集群
数据库·etcd