MySQL数据库 函数

目录

函数概述

字符串函数

数值函数

日期函数

流程函数


函数概述

函数是指一段可以直接被另一段程序调用的程序或代码。也就意味着,这一段程序或代码在MysQL中已经给我们提供了,我们要做的就是在合适的业务场景调用对应的函数完成对应的业务需求即可。那么,函数到底在哪儿使用呢?

我们先来看两个场景:

  1. 在企业的OA或其他的人力系统中,经常会提供的有这样一个功能,每一个员工登录上来之后都能够看到当前员工入职的天数。而在数据库中,存储的都是入职日期,如2000-11-12,那如果快速计算出天数呢?
  2. 在做报表这类的业务需求中,我们要展示出学员的分数等级分布。而在数据库中,存储的是学生的分数值,如98/75,如何快速判定分数的等级呢?

其实,上述的这一类的需求呢,我们通过MysQL中的函数都可以很方便的实现。

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

字符串函数

MysQL中内置了很多字符串函数,常用的几个如下:

演示如下:
# concat 字符串拼接
select concat('Hello',' MySQL');# 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);

案例:

由于业务需求变更,企业员工的工号,统一为 5 位数,目前不足 5 位数的全部在前面补 0 。比如: 1 号员 工的工号应该为00001
update emp set workno = lpad(workno, 5, '0');
处理完毕后 , 具体的数据为 :

数值函数

常见的数值函数如下:

演示如下:

# ceil 向上取整
select ceil(1.1); # floor 向下取整
select floor(1.9); # mod 取模
select mod(7,4); # rand 获取随机数
select rand(); # round 四舍五入
select round(2.344,2);
案例:
通过数据库的函数,生成一个六位数的随机验证码。
思路: 获取随机数可以通过rand()函数,但是获取出来的随机数是在0-1 之间的,所以可以在其基础上乘以1000000 ,然后舍弃小数部分,如果长度不足 6 位,补 0
select lpad(round(rand()*1000000 , 0), 6, '0'); 1

日期函数

常见的日期函数如下:

演示如下:

# curdate 当前日期
select curdate(); # curtime 当前时间
select curtime(); # now 当前日期和时间
select now(); # YEAR , MONTH , DAY 当前年、月、日
select YEAR(now());
select MONTH(now());
select DAY(now());# date_add 增加指定的时间间隔
select date_add(now(), INTERVAL 70 YEAR );# datediff 获取两个日期相差的天数
select datediff('2021-10-01', '2021-12-01');
案例:
查询所有员工的入职天数,并根据入职天数倒序排序。
思路: 入职天数,就是通过当前日期 - 入职日期,所以需要使用 datediff 函数来完成。
select name, datediff(curdate(), entrydate) as 'entrydays' from emp order by entrydays desc;

流程函数

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

演示如下:

# if
select if(false, 'Ok', 'Error');# ifnull
select ifnull('Ok','Default');
select ifnull('','Default');
select ifnull(null,'Default');# case when then else end
# 需求: 查询emp表的员工姓名和工作地址 (北京/上海 ----> 一线城市 , 其他 ----> 二线城市)
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;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/231196.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【GPU监控】Gpu-dcgm-exporter 监控

本站以分享各种运维经验和运维所需要的技能为主 《python零基础入门》:python零基础入门学习 《python运维脚本》: python运维脚本实践 《shell》:shell学习 《terraform》持续更新中:terraform_Aws学习零基础入门到最佳实战 《k8…

算法:二叉树最大深度

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 一、问题描述 二、递归算法 总结 提示:以下是本篇文章正文内容,下面案例可供参考 一、问题描述 给定一个二叉树,求其最大深度 3…

git运用之.gitignore 配置文件的常用写法及案例

前言 .gitignore 文件用于指定 Git 版本控制系统忽略的文件和文件夹。 常见的 .gitignore 配置文件的写法和案例 忽略特定文件: # 忽略所有 .log 文件 *.log # 忽略名为 .DS_Store 的文件 .DS_Store忽略特定文件夹: # 忽略名为 node_modules 的…

【问题思考总结】I/O总线的数据线和控制线的辨析【2012年 408真题 T21】

个人经过查阅资料发现,王道给的图好像挺有误导性的,比如,I/O总线中的地址总线应该是单向传输的,但是,在他的图例里面是双向的。文章若有错误,恳请指正,感激不尽。 问题 在做2012年408真题的时候…

如何提高股票交易速度?极速交易哪家好?

极速交易模式是一种交易方式,它以最短的时间进行快速交易。这种模式通常用于贵金属、外汇、原油、期权等金融产品的交易。 在极速交易模式中,交易者可以在最短时间内进行买卖操作,从而快速获取利润。这种交易方式通常需要高超的技术和经验&a…

【03】GeoScene创建海图或者电子航道图数据

1 配置Nautical属性 1.1 管理长名称 长名称(LNAM)是一个必要的对象标识符,是生产机构(AGEN)、要素识别号码(FIDN)和要素识别子项(FIDS)组件的串联。这三个子组件用于数…

【Spring】09 BeanClassLoaderAware 接口

文章目录 1. 简介2. 作用3. 使用3.1 创建并实现接口3.2 配置 Bean 信息3.3 创建启动类3.4 启动 4. 应用场景总结 Spring 框架为开发者提供了丰富的扩展点,其中之一就是 Bean 生命周期中的回调接口。本文将聚焦于其中的一个接口 BeanClassLoaderAware,介…

11889个字带你彻底弄清tcp/ip协议栈

tcpip协议栈 tcpip模型以太网协议ARP地址解析协议TCP协议 tcpip模型 OSI模型linux tcpip模型常用协议网络设备应用层应用层telnet/DHCP/TFTP/FTP/MQTT/NFS/DNS/FTP/SNMP表示层会话层传输层传输层TCP/UDP四层交换机网络层网络层IP/ICMP/IGMP/ARP路由器,三层交换机…

【LeetCode】383. 赎金信(String的遍历)

今日学习的文章链接和视频链接 leetcode题目地址:383. 赎金信 代码随想录题解地址:代码随想录 题目简介 给你两个字符串:ransomNote 和 magazine ,判断 ransomNote 能不能由 magazine 里面的字符构成。 如果可以,返…

01|LangChain系统安装和快速入门

01|LangChain系统安装和快速入门 什么是大语言模型 大语言模型是一种人工智能模型,通常使用深度学习技术,比如神经网络,来理解和生成人类语言。这些模型的“大”在于它们的参数数量非常多,可以达到数十亿甚至更多&am…

C++入门【10-C++ 函数】

C 函数 函数是一组一起执行一个任务的语句。每个 C 程序都至少有一个函数,即主函数 main() ,所有简单的程序都可以定义其他额外的函数。 您可以把代码划分到不同的函数中。如何划分代码到不同的函数中是由您来决定的,但在逻辑上&#xff0c…

日本药典数据库

日本药典(Japanese Pharmacopoeia,简称JP),对于药品研究人员来说,日本药典查询可以提供药品标准的参考,设定研究指标,支持药物注册和上市,以及了解行业趋势和发展。这些信息对于研究…

找出一个二维数组中的鞍点

找出一个二维数组中的鞍点&#xff0c;即该位置上的元素在该行上的最大、在该列上最小。也有可能没有鞍点。 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> int main() {int a[10][10] { 0 };int n 0, m 0;int i 0, j 0;printf("请输入这个数组有n行m列…

0088__pthread_cond_broadcast和pthread_cond_wait使用

pthread_cond_broadcast和pthread_cond_wait使用-CSDN博客

Yapi详细安装过程(亲测可用)

1. 前置条件 1、Git 2、NodeJs&#xff08;7.6&#xff09; 3、Mongodb&#xff08;2.6&#xff09; 2. NodeJs的安装 1、获取资源 curl -sL https://rpm.nodesource.com/setup_8.x | bash - 2、安装NodeJS yum install -y nodejs 3、查看NodeJs和Npm node -v npm -v…

算法设计与分析2023秋-头歌实验-实验一 循环与递归

文章目录 第1关&#xff1a;从自然数中取3个数进行组合之循环算法任务描述编程要求测试说明参考答案 第2关&#xff1a;从自然数中取3个数进行组合之递归算法任务描述编程要求测试说明参考答案 第3关&#xff1a;求n的阶乘n!任务描述编程要求测试说明参考答案 第4关&#xff1a…

【数据结构复习之路】图(严蔚敏版)两万余字超详细讲解

专栏&#xff1a;数据结构复习之路 复习完上面四章【线性表】【栈和队列】【串】【数组和广义表】【树和二叉树】&#xff0c;我们接着复习 图&#xff0c;这篇文章我写的非常详细且通俗易懂&#xff0c;看完保证会带给你不一样的收获。如果对你有帮助&#xff0c;看在我这么辛…

奥迦插件23.12.5支持32和64位图色模拟(和大漠插件类似)

源码名称&#xff1a;奥迦插件23.12.5和大漠插件类似奥迦插件在Windows 10操作系统上使用Visual Studio 2019编写,适用于所有较新的Windows平台,是一款集网络验证,深度学习,内核,视觉,文字,图色,后台,键鼠,窗口,内存,汇编,进程,文件,网络,系统,算法及其它功能于一身的综合插件插…

计算两个复数之积(结构体函数)

本题要求实现一个计算复数之积的简单函数。 函数接口定义&#xff1a; struct complex multiply(struct complex x, struct complex y); 其中struct complex是复数结构体&#xff0c;其定义如下&#xff1a; struct complex{int real;int imag; }; 裁判测试程序样例&#…

针对海量数据的存储与访问瓶颈的解决方案

背景 在当今这个时代&#xff0c;人们对互联网的依赖程度非常高&#xff0c;也因此产生了大量的数据&#xff0c;企业视这些数据为瑰宝。而这些被视为瑰宝的数据为我们的系统带来了很大的烦恼。这些海量数据的存储与访问成为了系统设计与使用的瓶颈&#xff0c;而这些数据往往存…