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

总结

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

相关推荐
TDengine (老段)8 分钟前
TDengine 配置参数作用范围对比
大数据·数据库·物联网·时序数据库·tdengine·涛思数据
2501_9291576832 分钟前
Switch 20.5.0系统最新PSP模拟器懒人包
android·游戏·ios·pdf
幼儿园老大*36 分钟前
什么是分布式数据库?有什么优势?
数据库·分布式
运维行者_43 分钟前
DDI 与 OpManager 集成对企业 IT 架构的全维度优化
运维·网络·数据库·华为·架构·1024程序员节·snmp监控
桦01 小时前
[MySQL]数据类型
数据库·mysql
小小的木头人1 小时前
Docker MySQL 单主从及分表函数
mysql
小蜗的房子2 小时前
MySQL学习之SQL语法与操作
数据结构·数据库·经验分享·sql·mysql·学习方法·数据库开发
洲覆2 小时前
MySQL 索引原理
数据库·mysql
用户092 小时前
Kotlin Flow的6个必知高阶技巧
android·面试·kotlin
用户092 小时前
Flutter插件与包的本质差异
android·flutter·面试