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

总结

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

相关推荐
玄同7651 小时前
SQLite + LLM:大模型应用落地的轻量级数据存储方案
jvm·数据库·人工智能·python·语言模型·sqlite·知识图谱
吾日三省吾码1 小时前
别只会“加索引”了!这 3 个 PostgreSQL 反常识优化,能把性能和成本一起打下来
数据库·postgresql
chian-ocean1 小时前
百万级图文检索实战:`ops-transformer` + 向量数据库构建语义搜索引擎
数据库·搜索引擎·transformer
那个村的李富贵1 小时前
解锁CANN仓库核心能力:50行代码搭建国产化AIGC图片风格迁移神器
mysql·信息可视化·aigc·cann
小Tomkk1 小时前
数据库 变更和版本控制管理工具 --Bytebase 安装部署(linux 安装篇)
linux·运维·数据库·ci/cd·bytebase
qq_12498707532 小时前
基于JavaWeb的大学生房屋租赁系统(源码+论文+部署+安装)
java·数据库·人工智能·spring boot·计算机视觉·毕业设计·计算机毕业设计
游戏开发爱好者82 小时前
日常开发与测试的 App 测试方法、查看设备状态、实时日志、应用数据
android·ios·小程序·https·uni-app·iphone·webview
王码码20352 小时前
Flutter for OpenHarmony 实战之基础组件:第三十一篇 Chip 系列组件 — 灵活的标签化交互
android·flutter·交互·harmonyos
黑码哥2 小时前
ViewHolder设计模式深度剖析:iOS开发者掌握Android列表性能优化的实战指南
android·ios·性能优化·跨平台开发·viewholder
倒流时光三十年2 小时前
SpringBoot 数据库同步 Elasticsearch 性能优化
数据库·spring boot·elasticsearch