[MySQL] MySQL中的内置函数

  本篇文章主要是对MySQL中常见的内置函数进行了详细解释。例如有日期类函数、字符串类函数、数学类函数等等。希望本篇文章会对你有所帮助。 

文章目录

一、日期类函数

1、1 使用详解

1、2 实例演示

二、字符串函数

2、1 使用详解

2、2 实例演示

三、数学函数

四、其他函数


🙋‍♂️ 作者:@Ggggggtm 🙋‍♂️

👀 专栏:MySQL 👀

💥 标题:MySQL中的内置函数💥

 ❣️ 寄语:与其忙着诉苦,不如低头赶路,奋路前行,终将遇到一番好风景 ❣️

一、日期类函数

  MySQL 中有许多内置的日期类函数,用于处理日期和时间数据。以下是一些常用的日期类内置函数及其功能详解:

  1. NOW()

    • 功能:返回当前日期和时间。
    • 示例:SELECT NOW();
  2. CURRENT_DATE()

    • 功能:返回当前日期。
    • 示例:SELECT CURRENT_DATE();
  3. CURRRENT_TIME()

    • 功能:返回当前时间。
    • 示例:SELECT CURRRENT_TIME();
  4. DATE_FORMAT(date, format)

    • 功能:将日期按指定格式进行格式化。
    • 示例:SELECT DATE_FORMAT('2023-12-06', '%Y-%m-%d');
  5. DAYOFWEEK(date)

    • 功能:返回日期对应的星期几,1 表示星期日,7 表示星期六。
    • 示例:SELECT DAYOFWEEK('2023-12-06');
  6. DATEDIFF(date1, date2)

    • 功能:返回两个日期之间的天数差。
    • 示例:SELECT DATEDIFF('2023-12-06', '2023-12-01');
  7. DATE_ADD(date, INTERVAL value unit)

    • 功能:在指定日期上加上一定的时间间隔。
    • 示例:SELECT ADDDATE('2023-12-06', INTERVAL 7 DAY);
  8. DATE_SUB(date, INTERVAL value unit)

    • 功能:在指定日期上减去一定的时间间隔。
    • 示例:SELECT SUBDATE('2023-12-06', INTERVAL 7 DAY);
  9. TIMESTAMPDIFF(unit, start_datetime, end_datetime)

    • 功能:返回两个日期时间之间的差距,根据指定的单位(如秒、分钟、小时等)。
    • 示例:SELECT TIMESTAMPDIFF(SECOND, '2023-12-01 12:00:00', '2023-12-06 12:00:00');

  具体我们也可结合下图进行观看。注意:sql语句是不区分大小写的。所以下述实例演示均用小写。

1、1 使用详解

SELECT NOW();

  功能就是查询当前时间,精确到年月日 和 时分秒。具体如下图:

CURRENT_DATE()

  功能即为查询当前日期。日期指的就是年月日。具体如下:

CURRRENT_TIME()

  功能就是查询当前时间,时间指的是时分秒。具体如下图:

DATE_FORMAT(date, format)

  功能就是date按照我们想要的格式进行输出,具体如下图:

DATEDIFF(date1, date2)

  功能就是计算两个日期的差值(date1 - date2),最后输出的单位是天。具体如下:

DATE_ADD(date, INTERVAL value unit)

  功能就是在date上加上我们所需要的时间。unit可以是年、月、日、时、分、秒。具体如下图:

DATE_SUB(date, INTERVAL value unit)

  这个函数的功能和用法与date_add是相同的。过多也就不再解释。直接看实例:

CURRENT_ TIMESTAMP()

  功能就是获取当前的时间戳。我们知道时间戳是一直变化的,直接看实例:

TIMESTAMPDIFF(unit, start_datetime, end_datetime)

  前面我们学习了两个日期的差值,输出的结果单位为天。现在我们想输出以秒或者其他单位,就可以用timestampdiff。具体实例如下:

1、2 实例演示

案例1:创建一张表,记录生日信息。

  具体表的创建如下:

  现在我们使用我们刚刚学到的内置函数进行插入信息。具体如下:

  我们也可使用current_date()来进行插入,具体如下图:

案例2:创建一个留言表 

  我们所需要的留言表就是能够记录下用户的留言,和其留言的时间。具体表结构如下:

  现在我们在进行插入数据,具体如下图:

  现在我们想查询所发表评论的日期,不需要时间,具体如下: 

  想要统计一段时间内帖子的流量,例如查询十分钟内所有的评论,具体如下:

二、字符串函数

2、1 使用详解

  我们在mysql中常见的字符串内置函数如下图:

  很多功能我们在学习语言的时候就已经学过,所以我们直接看其具体使用的案例。

charset (str)

  charset就是用来获取字符串所使用的字符集。查询一下员工表的工号和员工姓名所使用的字符集。具体如下图:

  在查询员工表中的信息时,使用charset函数获取所对应列使用的字符集即可,具体如下图:

concat (str1, str2, ...) 

  concat功能将我们所需要的字符串拼接到一起,使用起来较为简单。具体如下图:

  当我们所拼接的并不是字符串类型时,会自动转换为字符串类型再进行拼接。

instr(string,substring)

  instr就是查询字串的功能。注意:找不到的话返回0,能找到就返回在string中的位置。默认的第一给字符的下标为1。具体使用如下图:

ucase(str) 

  ucase将小写字母转换为大写字母。遇到不是字母的就自动跳过。具体如下:

lcase(str)

  lcase将小写字母转换为大写字母。遇到不是字母的跳过。具体如下:

left(str,length)与 right(str,length)

  left 和 right的功能:从左或者从右取length个字符输出。相当于就是取字串,但是是从第一字符或者最后一个字符开始。具体如下图:

length(str) 

  length是用来求取字符串str的长度的。注意:length函数返回字符串长度,以字节为单位。如果是多字节字符则计算多个字节数;如果是单字节字符则算作一个字节。比如:字母,数组算作一个字节,中文表示多个字节数(与字符集编码有关,utf-8中的一个中文占3个字节)。具体如下图:

  replace(str,search_str,repalce_str)的功能:先在str中进行查找,找到的话就进行替换。不再过多解释。

  strcmp(str1,str2)和 substring(str,pos,length)相信对大家来说都是再熟悉不过了。我们接下来看一下ltrim、rtrim、trim的使用

  其中trim(str)是去除str两侧的空格。ltrim(str)是去除str左侧的空格,rtrim(str)是去除str右侧的空格,具体如下:

2、2 实例演示

要求显示student表中的信息,显示格式:“XXX的语文是XXX分,数学XXX分,英语XXX 

  我们现在所使用的表如下:

  题目的要求就是将所有考生的信息格式化输出。这时候可用到concat来拼接字符串。具体如下:

求表中学生姓名占用的字节数 

  所占用的字节数我们就可以用length(str)来求,单位就是字节。具体如下图:

EMP表中所有名字中有S的替换成'上海'

  EMP表是员工表,具体如下图:

  我们现在需要做的是将EMP表中的ename中带有'S'的替换成’上海‘。可以直接用replace,就是先查询再替换。具体如下图:

截取EMP表中ename字段的第二个到第三个字符

  题目的要求就是找字串。我们可以直接用substring(str,pos,length)进行求取。具体如下图:

以首字母小写的方式显示所有员工的姓名

  首先,我们需要得到ename的首字母,然后再将它变成小写。最后在与剩余的部分进行拼接即可。具体如下图:

  注意,substring(str,pos,length)省去第三个参数时默认就是截取到字符串末尾。

三、数学函数

  mysql中常用到数学类的内置函数如下图:

  其中数学函数的使用较为简单。我们这里就不再举实例演示了。直接看一下其用法即可。

abs(num)求绝对值

bin(num)十进制转二进制

  注意:在转换小数时,默认只会转换整数部分,小数部分并不进行转换。

hex(num)十进制转十六进制

  注意:上述的16转换为十六进制时,并不是转换成了十,而是十六进制的1、0。

conv(num,from_base,to_base)将 num 从 from_base 进制转换为 to_base 进制

floor(num)向下取整,ceiling(num)向上取整

  相信这两个函数大家并不陌生。如果搞不清楚,建议画一条竖线进行标注。我们直接看使用:

format(num,n) 格式化num,保留n为小数

 

rand()生成随机之,范围[ 0.0,1.0)

  rand()生成的随机数是有范围的。但是我们可以对生成的结果进行算术运算,得到我们想要的随机值范围。假如我们想要生成的随机数单位为:0~100。具体如下图:

mod(num1,num2)取模,求余

 

四、其他函数

user()

  user函数功能:用于获取mysql连接的当前用户名和主机名。具体如下图:

database()

  database函数用于显示当前正在使用的数据库,具体如下图:

ifnullval1 val2

  ifnull()函数与C语言中的三目操作符 :? 很相似。ifnullval1 val2)功能是如果val1null,返回val2,否则返回val1的值。具体如下:

md5()与password()

  md5()与password()是用于加密和处理用户密码的常见函数。这两个函数可以帮助保护用户密码的安全性。具体详细细节就不再过多解释,我们直接看起用法:

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

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

相关文章

Flutter视频播放器在iOS端和Android端都能实现全屏播放

Flutter开发过程中,对于视频播放的三方组件有很多,在Android端适配都挺好,但是在适配iPhone手机的时候,如果设置了UIInterfaceOrientationLandscapeLeft和UIInterfaceOrientationLandscapeRight都为false的情况下,无法…

中科院分区和JCR分区有什么区别

文章目录 名词解释学科划分不同参考的影响因子不同期刊分区不同期刊分区阈值不同 名词解释 中科院分区:又称“中科院JCR分区”,是中国科学院文献情报中心世界科学前沿分析中心的科学研究成果,期刊分区表数据每年底(每年12月中下旬…

看图学源码之 Atomic 类源码浅析二(cas + 分治思想的原子累加器)

原子累加器 相较于上一节看图学源码 之 Atomic 类源码浅析一(cas 自旋操作的 AtomicXXX原子类)说的的原子类,原子累加器的效率会更高 XXXXAdder 和 XXXAccumulator 区别就是 Adder只有add 方法,Accumulator是可以进行自定义运算方…

【数据结构和算法】到达首都的最少油耗

其他系列文章导航 Java基础合集数据结构与算法合集 设计模式合集 多线程合集 分布式合集 ES合集 文章目录 其他系列文章导航 文章目录 前言 一、题目描述 二、题解 三、代码 四、复杂度分析 前言 这是力扣的2477题,难度为中等,解题方案有很多种&…

uc_16_UDP协议_HTTP协议

1 UDP协议 适合游戏、视频等情景,安全性要求不高,效率要求高。 1)UDP不提供客户机与服务器的链接: UDP的客户机与服务器不必存在长期关系。一个UDP的客户机在通过一个套接字向一个UDP服务器发送了一个数据报之后,马上…

【flink番外篇】1、flink的23种常用算子介绍及详细示例(完整版)

Flink 系列文章 一、Flink 专栏 Flink 专栏系统介绍某一知识点,并辅以具体的示例进行说明。 1、Flink 部署系列 本部分介绍Flink的部署、配置相关基础内容。 2、Flink基础系列 本部分介绍Flink 的基础部分,比如术语、架构、编程模型、编程指南、基本的…

Docker部署.NET6项目

Docker的三大核心概念 1、docker仓库(repository) docker仓库(repository)类似于代码库,是docker集中存放镜像的场所。实际上,注册服务器是存放仓库的地方,其上往往存放着很多仓库。每个仓库集…

Android引用SDK包实现高德地图展示

一、准备工作 注册高德地图开放平台 注册过程我就不多说了,挺简单的,需要登录,然后注册成为开发者,还需要支付宝认证、手机号码验证、邮箱验证挺多的,但是速度很快。基本上随时验证随时注册成功。新建应用新建…

基于单片机智能病床呼叫系统设计

**单片机设计介绍,基于单片机智能病床呼叫系统设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机的智能病床呼叫系统是一种利用单片机技术设计的医疗设备,它能够帮助病人在住院期间快速、方便…

使用pyscenedetect进行视频场景切割

1. 简介 在视频剪辑有转场一词:一个视频场景转换到另一个视频场景,场景与场景之间的过渡或转换,就叫做转场。 本篇介绍一个强大的开源工具PySceneDetect,它是一款基于opencv的视频场景切换检测和分析工具,项目地址: h…

在做题中学习(31):电话号码的字母组合(全排列)

17. 电话号码的字母组合 - 力扣(LeetCode) 思路:既然要排列组合,就得先根据数字字符取出来 所以先定义一个string类的数组通过下标取到每个数字对应的映射。 string _numsTostr[10]{"","","abc"…

Android:java.lang.RuntimeException: Unable to start activity ComponentInfo

java.lang.RuntimeException: Unable to start activity ComponentInfo 报错描述: 在导入别人项目运行时出现了这个报错: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.news/com.example.activity.DetailNews}: ja…

消息队列使用指南

介绍 消息队列是一种常用的应用程序间通信方法,可以用来在不同应用程序或组件之间传递数据或消息。消息队列就像一个缓冲区,接收来自发送方的消息,并存储在队列中,等待接收方从队列中取出并处理。 在分布式系统中,消…

PAD平板签约投屏-高端活动的选择

传统的现场纸质签约仪式除了缺乏仪式感之外还缺少互动性,如果要将签约的过程投放到大屏幕上更是需要额外的硬件设备成本。相比于传统的纸质签约仪式,平板现场电子签约的形式更加的新颖、更富有科技感、更具有仪式感。 平板签约投屏是应用于会议签字仪式的…

【面试经典150 | 二叉树】翻转二叉树

文章目录 写在前面Tag题目来源题目解读解题思路方法一:递归方法二:迭代 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法,两到三天更新一篇文章,欢迎催更…… 专栏内容以分析题目为主,并附带一些对于本题…

笔记69:Conv1d 和 Conv2d 之间的区别

笔记地址:D:\work_file\(4)DeepLearning_Learning\03_个人笔记\4. Transformer 网络变体 a a a a a a a a a a a

万户 ezOFFICE convertFile 文件读取漏洞复现

0x01 产品简介 万户OA ezoffice是万户网络协同办公产品多年来一直将主要精力致力于中高端市场的一款OA协同办公软件产品,统一的基础管理平台,实现用户数据统一管理、权限统一分配、身份统一认证。统一规划门户网站群和协同办公平台,将外网信息维护、客户服务、互动交流和日…

电脑搜不自己的手机热点,其余热点均可!

一、现象: 之前可正常连接,突然间发现收不到自己的WiFi信号,其余人均可收到。通过重复手机电脑关机、改变热点设置中的频段等方式均没解决,同事电脑和手机可搜索到我的WiFi。 二、问题: WiF驱动程序更新 三&#x…

【Docker】Docker Compose,yml 配置指令参考的详细讲解

作者简介: 辭七七,目前大二,正在学习C/C,Java,Python等 作者主页: 七七的个人主页 文章收录专栏: 七七的闲谈 欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖&#x1f…

delphi android打开外部文件,报错android.os.FileUriExposedException解决方法

Android 7.0强制启用了被称作 StrictMode的策略,带来的影响就是你的App对外无法暴露file://类型的URI了。 如果你使用Intent携带这样的URI去打开外部App(比如:打开系统相机拍照),那么会抛出FileUriExposedException异常。 Delphi 为Android…