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;

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

前后端传参中遇见的问题

前后端传参经常容易出错,本文记录开发springBootMybatis-plusvuecli项目中出现的传参问题及解决办法 1.前后端没有跨域配置,报错 解决方法:后端进行跨域配置,拷贝CorsConfig类 package com.example.xxxx.config;import org.spr…

k8s-ingress 8

ExternalName类型 当集群外的资源往集群内迁移时,地址并不稳定,访问域名或者访问方式等会产生变化; 使用svc的方式来做可以保证不会改变:内部直接访问svc;外部会在dns上加上解析,以确保访问到外部地址。 …

2024年软件测试入坑指南,新人必看系列

本科非计算机专业,在深圳做了四年软件测试工作,从之前的一脸懵的点点点,到现在会点自动化测试,说一点点非计算机专业人员从事软件测试的心得体会,仅供参考交流。 如果你是非计算机专业,毕业不久&#xff0…

CMOS电源稳压器LDO

一、基本概述 TX6213是一款300mA Low Power LDO,输入电压2.5V~6.5V,输出范围1.0V~3.3V,输出电流300mA,PSRR为75dB 1KHz,压差为220mV IOUT200mA。 二、应用场景 MP3/MP4 Players Cellphones, radiophone, digital ca…

智能优化算法应用:基于适应度相关算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于适应度相关算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于适应度相关算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.适应度相关算法4.实验参数设定5.算法…

C++设计模式-Builder 构建器

通过“对象创建” 模式绕开new,来避免对象创建(new)过程中所导致的紧耦合(依赖具体类),从而支持对象创建的稳定。它是接口抽象之后的第一步工作。 一、动机 在软件系统中,有时候面临着“一个复…

Python:(Sentinel-1)如何解析SNAP输出的HDF5文件并输出为GeoTIFF?

博客已同步微信公众号:GIS茄子;若博客出现纰漏或有更多问题交流欢迎关注GIS茄子,或者邮箱联系(推荐-见主页). Python:(Sentinel-1)如何解析SNAP输出的HDF5文件并输出为GeoTIFF? 01 前言 最近…

MySQL安装——备赛笔记——2024全国职业院校技能大赛“大数据应用开发”赛项——任务2:离线数据处理

MySQLhttps://www.mysql.com/ 将下发的ds_db01.sql数据库文件放置mysql中 12、编写Scala代码,使用Spark将MySQL的ds_db01库中表user_info的全量数据抽取到Hive的ods库中表user_info。字段名称、类型不变,同时添加静态分区,分区字段为etl_da…

TCP单人聊天

TCP和UDP两种通信方式它们都有着自己的优点和缺点 这两种通讯方式不通的地方就是TCP是一对一通信 UDP是一对多的通信方式 TCP通信 TCP通信方式呢 主要的通讯方式是一对一的通讯方式,也有着优点和缺点 它的优点对比于UDP来说就是可靠一点 因为它的通讯方式是需…

谈谈你知道的设计模式?请手动实现单例模式 , Spring 等框架中使用了哪些模式?

文章目录 谈谈你知道的设计模式请手动实现单例模式Spring等框架中使用哪些设计模式?设计模式分类 谈谈你知道的设计模式 我们知道 InputStream 是一个抽象类,标准类库中提供了 FileInputStream、ByteArrayInputStream 等各种不同的子类,分别…

8款AI写作神器,轻松创作高质量内容

随着AI技术的不断发展,AI生成文案平台也逐渐成为一种新型的写作工具。这些平台利用先进的算法和自然语言处理技术,能够快速生成高质量的文案内容。不仅可以提高写作效率,还可以帮助创作者更好地表达思想和创意。AIGCer介绍几款好用的AI写作工…

什么?Figma 的 fig 文件格式居然被破解出来了

大家好,我是前端西瓜哥。 上周图形编辑器交流群里有人问,对于 Figma 导出的 fig 文件,该如何解析其格式,拿到可读数据。 经过群友的一番讨论,这个问题最后算是解决了。 fig 文件 导出 Figma 的设计文件&#xff0c…

智能优化算法应用:基于人工电场算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于人工电场算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于人工电场算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.人工电场算法4.实验参数设定5.算法结果6.…

产品调研——AI平台

本文主要记录了对腾讯云-TIONE平台、华为云-ModelArt等主流AI平台的产品调研。 交互式建模 简单点说就是提供了带训练资源的云IDE,使用形态包括Notebook、VsCode等。 腾讯云-TI平台 TI平台将tensorflow、pytorch、spark环境等均集成到一个Notebook容器中&#xf…

深入理解强化学习——马尔可夫决策过程:价值迭代-[价值迭代算法]

分类目录:《深入理解强化学习》总目录 文章《深入理解强化学习——马尔可夫决策过程:价值迭代-[最优性原理]》和文章《深入理解强化学习——马尔可夫决策过程:价值迭代-[确认性价值迭代]》介绍了价值迭代的基础知识,本文将介绍价值…

AX7A200教程(9): ov5640摄像头输出显示720p视频

一,功能框图 ov5640摄像头视频通过ddr3缓存后,最后使用hdmi接口进行输出显示 二,摄像头硬件说明 2.1,像头硬件管脚 如下图所示,一共18个管脚 2.2,摄像头电源初始化时序 因这个ov5640摄像头是买的老摄像…

制造企业MES管理系统可以和AI结合应用吗

在当今的数字化时代,人工智能AI和MES生产管理系统的结合将成为制造企业发展的重要趋势。这种结合可以为制造企业带来许多优势,如提高生产效率、降低成本、优化资源利用等。本文将探讨MES管理系统和AI的结合以及它们在制造企业中的应用,并分析…

【JavaWeb学习笔记】11 - WEB工程路径专题

一、工程路径问题 1.引入该问题 通过这几个去访问很麻烦 二、工程路径解决方案 1.相对路径 1.说明:使用相对路径来解决,一 个非常重要的规则:页面所有的相对路径,在默认情况下,都会参考当前浏览器地址栏的路径http:/ /ip:port/工程名/来进…

BM61 矩阵最长递增路径

题目 矩阵最长递增路径 给定一个 n 行 m 列矩阵 matrix ,矩阵内所有数均为非负整数。 你需要在矩阵中找到一条最长路径,使这条路径上的元素是递增的。并输出这条最长路径的长度。 这个路径必须满足以下条件: 1. 对于每个单元格,你…

【基于APB总线的DES实现】

基于APB总线的DES实现 本文内容摘要APB介绍仿真结果整体仿真写入数据DES加密部分DES加密读出密文 整体代码 本文内容摘要 本文是设计一个可兼容APB总线的DES加密协处理器,用来将DES加密模块与APB总线进行对接,使总线发送来的数据可以正常写入并进行加密后…