十六、MySQL常用函数有哪些?

news2024/11/27 10:37:36

1、函数

        说到函数,就必须知道其本质是什么,在MySQL中,函数是指一段可以直接被另一段程序调用的程序或代码。

2、字符串函数

(1)函数

(2)字符串连接函数

字符串连接函数:
select concat(传入参数1,传入参数2,……)

实际操作:

# 传入参数为多个字符串,会将多个字符串连接起来
select concat('Yang ','Hai ','tao');
-- Yang Hai Tao

(3)将大写转换为小写函数

# 将传入参数中的大写字母,全部转换为小写字母
select lower(传入参数)

实际操作:

# 将大写转换为小写
select lower('HelL0');
-- hello

(4)将小写转换为大写函数

# 将传入参数中的小写字母转换为大写字母
select upper(传入参数)

实际操作:

# 将小写转换为大写
select upper('hello');
-- HELLO

(5)左填充函数

左填充,用(传入参数3)对(传入参数1)的左边进行填充,从而字符串最终的长度为n

# 左填充,用(传入参数3)对(传入参数1)的左边进行填充,从而字符串最终的长度为n
-- 注意,n指的是最终字符串的长度
select lpad(传入参数1,n,传入参数3);

实际操作:

# 左填充,用(传入参数3)对(传入参数1)的左边进行填充,从而字符串最终的长度为n
-- 注意,n指的是最终字符串的长度
select lpad('g',4,'yan');
-- yang

(6)右填充函数

# 右填充,用(传入参数3)对(传入参数1)的右边进行填充,从而字符串最终的长度为n
select rpad(传入参数1,n,传入参数3); 

实际操作:

# 右填充,用(传入参数3)对(传入参数1)的右边进行填充,从而字符串最终的长度为n
select rpad('yan',4,'g');
-- yang

(7)去掉字符串头部和尾部空格函数

# 去掉字符串头部和尾部的空格
-- 注:传入参数头部、中间、尾部都有空格,但trim函数,只对头部和尾部的空格生效
select trim('传入参数');

实际操作:

# 去掉字符串头部和尾部的空格
-- 注:传入参数头部、中间、尾部都有空格,但trim函数,只对头部和尾部的空格生效
select trim(' Yang hai tao ');
-- Yang hai tao

(8)返回传入参数1从start位置起的len个长度的字符串

# 返回传入m从start位置起的len个长度的字符串
-- start=数字m,代表从第几个字符开始
select substring('YangHaiTao',m,len);

实际操作:

# 返回传入参数1从start位置起的len个长度的字符串
-- start=数字,代表从第几个字符开始
select substring('YangHaiTao',1,4);
-- Yang

3、数值函数

(1)向上取整数函数

向上取整数
select ceil(传入参数);

 实际操作:

传入参数等于1.5,向上取整数,代表大于1.5的最小整数

# 向上取整:
select ceil(1.5);
-- 2

(2)向下取整数函数

向下取整数
select floor(传入参数);

实际操作:

传入参数为1.5,向下取整数,即为求不大于1.5的最小整数

# 向下取整:
select floor(1.5);
-- 1

(3)取模

# 取模:
select mod(传入参数x,传入参数y);

实际操作: 

# 取模:
select mod(5,3);
-- 2;5-3*[5/3]=5-3*1=2

(4)返回一个0~1内的随机数

# 返回一个0~1内的随机数:
select rand();

 实际操作:

# 返回一个0~1内的随机数:
select rand();
-- 0.39300280846003705

(5)对传入参数x四舍五入,保留y位小数

# 求参数x四舍五入的值,保留y位小数:
传入参数1:小数
小数点后保留n位
select round(传入参数1,n);

实际操作: 

# 求参数x四舍五入的值,保留y位小数:
select round(2.3453223,3);
-- 2.345

(6)案例:

题目:

通过数据库函数,生成一个六位数的随机验证码。

解题思路:

-- 第一步:先调用rand函数,生成0~1之间的随机小数,再将其乘以1000000

-- 第二步:再调用round函数,将传入数字进行四舍五入,小数点后保留零位

-- 第三步:为了避免第一步生成的随机小数十分位为0,所以调用字符串函数lpad,将长度设置为6,从左边开始补位(补0)

-- 第四步:输出六位随机验证码

解答:

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

4、 日期函数

(1) 返回当前日期:

/*返回当前日期*/
select curdate();
-- 2023-09-06 4

(2)返回当前时间:

/*返回当前时间*/
select curtime();
-- 17:25:29

(3)返回当前时间和日期:

/*返回当前日期和时间*/
select now();
-- 2023-09-06 17:28:23

(4)获得指定date的年份:

/*获得指定date的年份*/
select year(now());
-- 2023

(5)获得指定date的月份:

/*获得指定date的月份*/
select month(now());
-- 9

(6)获得指定date的日期:

/*获得指定date的日期*/
select day(now());
-- 6

(7)返回设定时间区间之后的日期:

/*返回一个日期,其时间值加上一个时间间隔expr后的时间值*/
select date_add(now(),interval 70 day);
-- 2023-11-15 17:37:25

(8)求两个指定时间之间相差的天数:

/*求两个指定时间之间相差的天数*/
select datediff('2022-01-02','2021-10-02');
-- 92

5、流程函数

(1)if(传入参数1,传入参数2,传入参数3)

如果传入参数1为True,则返回传入参数2,否则返回传入参数3

# if(传入参数1,传入参数2,传入参数3)
# 如果传入参数1为True,则返回传入参数2,否则返回传入参数3
select if(true,'ok','Error');
-- ok

(2)ifnull(传入参数1,传入参数2)

如果传入参数1不为null,则输出传入参数1,如果为null,则输出传入参数2

# ifnull(传入参数1,传入参数2)
select ifnull('ok','Error');
-- ok
select ifnull(null,'Error');
-- Error

(3)case 传入参数1 when ’a‘ then 'b' else 'c' end

        如果传入参数1等于‘a’,那么输出‘b’,如果传入参数不等于‘a’,那么输出‘c’,其中when和then可以叠加。

# case 传入参数1 when ’a‘ then 'b' else 'c' end
# 如果传入参数1等于‘a’,那么输出‘b’,如果传入参数不等于‘a’,那么输出‘c’,其中when和then可以叠加
select
    number,
    name,
    case place
        when '北京' then '一线城市'
        when '上海' then '一线城市'
        else '二线城市' end
from
    people;

(4) select case 传入参数1 when m then n else x end

给case传入参数1,如果传入参数1等于m,则返回n,如果传入参数1不等于m,则返回x;

select case 'jom' when 'jom' then 'kom' else 'JOM' end;

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

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

相关文章

第三章 LInux多线程开发 3.1-3.5线程创建 终止 分离

创建线程:(好好记住 可能会叫写代码) 一般情况下,main函数所在的线程我们称之为主线程(main线程),其余创建的线程称之为子线程。 程序中默认只有一个进程,fork()函数调用,2进行 程序…

ComfyUI 安装

背景: stable diffussion XL最先适配,专业性强的SD操作界面 安装步骤: git clone GitHub - comfyanonymous/ComfyUI: A powerful and modular stable diffusion GUI with a graph/nodes interface. 1、pip install torch torchvision torc…

【压力测试指南】没有任何文档,小白也可以做的压力测试

前言 一般在执行压力测试之前,会由开发提供出接口文档,包含一些接口的详细参数,便于测试工程师编写测试脚本。但在某些情况下,接口等相关文档缺失,那作为Tester,我们该如何顺利的实施压力测试呢&#xff1…

问道管理:光刻胶概念再度活跃,广信材料两连板,蓝英装备等涨停

光刻胶概念6日盘中再度活泼,截至发稿,扬帆新材、广信资料、蓝英配备“20cm”涨停,盛剑环境亦涨停,高盟新材涨超9%,同益股份、容大感光涨超5%。 值得注意的是,广信资料已连续两个交易日涨停。公司近来在成绩…

快速回顾Intel的发展史,看看你都用过哪些处理器

前言 提到CPU我们第一个想起的就是Intel其次才是AMD,有计算机的地方就有它的身影,Intel一直占据着半导体金字塔的顶端,也一直牵制着整个PC市场,这些年间Intel发布了各种各样的CPU,我大体给大家总结一下,看…

聊聊 HTMX 吧

写在前面 最近看了几篇关于 htmx 的文章,自己也去看了一眼官网,也去油管看了一下当时 htmx 发布会的时候他们的演示,下面说几点我对这个所谓的新型起来的技术的看法, 他的来源是什么 首先说一下他虽然是一个新型的技术&#xff0c…

【每日一题】73. 矩阵置零

73. 矩阵置零 - 力扣(LeetCode) 给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 示例 1: 输入:matrix [[1,1,1],[1,0,1],[1,1,1]] 输出:[…

一文讲解Transformer

我们本篇文章来详细讲解Transformer: 首次提出在:Attention is all you need (arxiv.org) 简单来说,Transfomer就是一种Seq2seq结构,它基于多头自注意力机制,解决了传统RNN在计算过程中不能够并行化的问题。即相较于RNN而言&…

c语言每日一练(14)【加强版】

前言:每日一练系列,每一期都包含5道选择题,2道编程题,博主会尽可能详细地进行讲解,令初学者也能听的清晰。博主有时会将一些难题综合成每日一练加强版,加强版是特殊的,它仅包含5道选择题&#x…

如何将home目录空间扩充到根目录下

目录 1、查看查看磁盘使用情况2、扩容思路3、卸载并删除/home4、扩大/root逻辑卷5、扩大/文件系统6、重建/home逻辑卷7、创建/home文件系统8、将新建的文件系统挂载到/home目录下9、恢复/home并删除备份10、再次查看看磁盘存储 系统:centos7.9 1、查看查看磁盘使用…

shell指令练习

一、使用cut截取出Ubuntu用户的家目录,要求:不能使用":"作为分割 ubuntuubuntu:01_day$ grep "^Ubuntu" /etc/passwd -ni | cut -d "/" -f 2,3 | cut -c 1-11 home/ubuntu

【算法专题突破】双指针 - 和为s的两个数字(6)

目录 1. 题目解析 2. 算法原理 3. 代码编写 写在最后: 1. 题目解析 题目链接:剑指 Offer 57. 和为s的两个数字 - 力扣(Leetcode) 这道题题目就一句话但是也是有信息可以提取的, 最重要的就是开始的那句话&#…

SonarQube介绍和安装

docker安装postgres数据库 docker安装sonarqube 安装前在官网上确定一下可用的版本号 创建sonarqube_docker目录 本实验中,jdk,maven,jenkins,postgres,sonarqube都安装在同一台服务器上。 docker compose启动 修改虚拟机内存 sonarqube启动成功 默认用户名和密…

Javase | 字符编码、转义字符、方法执行过程中的 “内存分配”

目录: 字符编码转义字符:转义字符在控制台上输出 “反斜杠字符”在控制台上输出 “单引号字符” 方法执行过程中的 “内存分配” 字符编码 为了让计算机可以表示现实世界中的文字,我们需要人为进行干涉,需要人负责提前制定 “文字…

Linux系统之mkdir与rmdir命令的基本使用

Linux系统之mkdir与rmdir命令的基本使用 一、mkdir命令介绍1.1 mkdir命令简介1.2 mkdir命令的由来 二、mkdir命令的使用帮助2.1 mkdir命令的help帮助信息2.2 mkdir命令的选项解释 三、mkdir命令的基本使用3.1 查看mkdir的版本3.2 创建一个新目录3.3 创建目录时设置目录权限3.4 …

【MySQL基础|第一篇】——谈谈SQL中的DDL语句

个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【MySQL学习专栏】🎈 本专栏旨在分享学习MySQL的一点学习心得,欢迎大家在评论区讨论💌 前言&#xff…

vue优化首屏加载时间优化-cdn引入第三方包

前言 为什么要进行首屏加载优化,因为随着我们静态资源和第三方包和代码增加,压缩之后包会越来越大 随着网络的影响,在我们第一输入url请求资源时候,网络阻塞,加载时间长,用户体验不好 仔细观察后就会发现…

linux和macOS平台中python语言文件上传的一处不同实现

背景 linux系统, python语言,tornado框架 现象 x文件在macOS平台可正常上传, linux平台上传失败。 x文件说明 文件名:xxxx秘密 .mp3 文件格式:mp3 原因 文件名包含\x20\x7f导致, \x20是设备控制, \…

Android逆向工程【黑客帝国】

Android逆向是一门艺术,涵盖的范畴非常广,要学习的东西也很多,如果是为了就业目的,学习的偏向性一定要掌握好。而Android逆向必须掌握的技能有以下: 负责安卓程序的加解密和数据传输分析、拆解、逆向等工作;逆向APK,了…

Agisoft/PhotoScan手动对齐照片

所以我到网上查了一下资料,了解了如何通过添加标记的方式,手动对齐照片。参考文档是PhotoScan的用户手册(http://www.agisoft.com/pdf/photoscan-pro_1_4_en.pdf)。 手动对齐照片,需要在未对齐照片上添加四个及以上标记,并在已对…