数据库(MySQL)—— 函数

embedded/2024/11/14 4:33:40/

数据库(MySQL)—— 函数

  • 字符串函数
  • 数值函数
  • 日期函数
  • 流程函数

我们今天来看MySQL中为我们提供了哪些函数:

MySQL中的函数主要分为以下四类: 字符串函数、数值函数、日期函数、流程函数。

字符串函数

函数功能
CONCAT(S1, S2, …, Sn)字符串拼接,将S1,S2,… Sn拼接成一个字符串
LOWER(str)将字符串str全部转为小写
UPPER(str)将字符串str全部转为大写
LPAD(str, n, pad)左填充,用字符串pad对str的左边进行填充,达到n个字符串长度
RPAD(str, n, pad)右填充,用字符串pad对str的右边进行填充,达到n个字符串长度
TRIM(str)去掉字符串头部和尾部的空格
SUBSTRING(str, start, len)返回从字符串str从start位置起的len个长度的字符串

我们举一些例子:

concat : 字符串拼接

select concat('Hello' , ' MyLove');

在这里插入图片描述

lower : 全部转小写

select lower('Hello');

在这里插入图片描述
upper : 全部转大写

select upper('Hello');

在这里插入图片描述lpad : 左填充

select lpad('01', 5, '-');

在这里插入图片描述rpad : 右填充

select rpad('01', 5, '-');

在这里插入图片描述trim : 去除空格

select trim('         Hello MySQL ');

在这里插入图片描述
substring : 截取子字符串

select substring('Hello MySQL',1,5);

在这里插入图片描述我们拿以前的emp表举个例子:

由于业务需求变更,企业员工的工号,统一为5位数,目前不足5位数的全部在前面补0。比如: 1号员工的工号应该为00001。

update emp set workno = lpad(workno, 5, '0');

在这里插入图片描述

数值函数

函数功能
CEIL(x)向上取整
FLOOR(x)向下取整
MOD(x, y)返回x除以y的余数(模)
RAND()生成一个0到1之间的随机数
ROUND(x, y)对x进行四舍五入,保留到小数点后y位

举几个例子:
ceil:向上取整

select ceil(1.1);

在这里插入图片描述floor:向下取整

select floor(1.9);

在这里插入图片描述
mod:取模

select mod(7,4);

在这里插入图片描述 rand:获取随机数

select rand();

在这里插入图片描述round:四舍五入

select round(2.344,2);

在这里插入图片描述

比如我们想生成一个六位数的验证码:

select lpad(round(rand()*1000000 , 0), 6, '0');

在这里插入图片描述

日期函数

函数功能
CURDATE()返回当前日期
CURTIME()返回当前时间
NOW()返回当前日期和时间
YEAR(date)获取指定日期的年份
MONTH(date)获取指定日期的月份
DAY(date)获取指定日期的日
DATE_ADD(date, INTERVAL expr type)返回一个日期/时间值加上特定时间间隔后的日期/时间值
DATEDIFF(date1, date2)返回date1和date2之间的时间差,单位为天

curdate:当前日期
在这里插入图片描述curtime:当前时间

select curtime(); 1

在这里插入图片描述 now:当前日期和时间

select now();

在这里插入图片描述 YEAR , MONTH , DAY:当前年、月、日
在这里插入图片描述date_add:增加指定的时间间隔

select date_add(now(), INTERVAL 70 YEAR );

在这里插入图片描述 datediff:获取两个日期相差的天数

select datediff('2023-10-01', '2022-12-01');

在这里插入图片描述比如:查询所有员工的入职天数,并根据入职天数倒序排序。

-- 入职天数
select name, datediff(curdate(), entrydate) as 'entrydays' from emp order by entrydays desc;

在这里插入图片描述

流程函数

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

函数功能
IF(value, t, f)如果value为真,则返回t,否则返回f
IFNULL(value1, value2)如果value1非空,则返回value1,否则返回value2
CASE WHEN [val1] THEN [res1] … ELSE [default] END如果val1为真,则返回res1,… 否则返回default默认值
CASE [expr] WHEN [val1] THEN [res1] … ELSE [default] END如果expr的值等于val1,则返回res1,… 否则返回default默认值

if

select if(false, 'Ok', 'Error');

在这里插入图片描述ifnull

select ifnull('Ok','Default');
select ifnull('','Default');
select ifnull(null,'Default');

在这里插入图片描述这里注意,这里的空指的是null,不是指一个空字符,或者空字符串,所以第二条select会返回 ’ '。

case when then else end

查询emp表的员工姓名和工作地址 (北京/上海 ----> 一线城市 , 其他 ----> 二线城市

select name ,(case workaddress when '北京' then '一线城市'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);

我们要分别查询他们每科的成绩,并根据他们的成绩来划分成绩等级(优秀,及格,不及格)

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;

在这里插入图片描述


http://www.ppmy.cn/embedded/39205.html

相关文章

bcrypt.dll文件丢失怎么办?bcrypt.dll怎么修复?

在计算机系统运行过程中,如果发现无法找到或缺失bcrypt.dll文件,可能会引发一系列的问题与故障。首先,由于bcrypt.dll是系统中一个重要的动态链接库文件,它的主要功能可能涉及到系统核心服务、应用程序支持或者特定功能模块的运行…

基于springboot实现的疫情网课管理系统

开发语言:Java 框架:springboot JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7(一定要5.7版本) 数据库工具:Navicat11 开发软件:eclipse/myeclipse/idea Maven…

【LeetCode】链表oj专题

前言 经过前面的学习,咋们已经学完了链表相关知识,这时候不妨来几道链表算法题来巩固一下吧! 如果有不懂的可翻阅之前文章哦! 个人主页:小八哥向前冲~-CSDN博客 数据结构专栏:数据结构【c语言版】_小八哥…

Java算法-力扣leetcode-58. 最后一个单词的长度

58. 最后一个单词的长度 给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。 单词 是指仅由字母组成、不包含任何空格字符的最大子字符串 示例 1: 输入: s "Hello World…

Java入门基础学习笔记12——变量详解

变量详解: 变量里的数据在计算机中的存储原理。 二进制: 只有0和1, 按照逢2进1的方式表示数据。 十进制转二进制的算法: 除二取余法。 6是110 13是1101 计算机中表示数据的最小单元:一个字节(byte&…

使用zdppy_amauth开发获取用户列表接口

服务端代码: 1、创建数据库连接对象2、初始化数据库3、声明一个上下文4、挂载用户相关的路由,这里主要由:登录,注册,获取用户列表5、启动服务 import mcrud import api import amauth import env import contextlibe…

Adobe Premiere Pro安装

一、安装包下载 链接:https://pan.baidu.com/s/1aYqTSQQutDguKYZE-yNHiw?pwd72l8 提取码:72l8 二、安装步骤 1.鼠标右击【Pr2024(64bit)】压缩包(win11及以上系统需先点击“显示更多选项”)【解压到 Pr2024(64bit)】。 2.打开…

python怎么卸载pip

pip是常用的python包管理工具,可以先安装pip,然后利用pip安装requests等包。 卸载pip很简单,只需要一句命令即可: sudo pip uninstall pip 然后会提示你是否确认卸载,输入“y”,按回车键即可。 卸载完成之…