【MySQL】内置函数

本文介绍了MySQL数据库中的各种内置函数,包括日期函数(如current_date、date_diff和now()),字符串函数(如concat、substr和length),数学函数(如abs、ceil和floor),以及其他实用函数(如md5和ifnull)。通过实例演示如何在实际场景中应用这些函数处理数据和格式化输出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【MySQL】内置函数

作者:爱写代码的刚子

时间:2024.4.1

前言:本篇博客将会介绍mysql中的内置函数

日期函数

函数名称描述
current_date()当前日期
current_time()当前时间
current_timestamp()当前时间戳
date(datetime)返回datetime参数的日期部分
data_add(date,interval d_value_type)在date中添加日期或者时间,interval后的数值单位可以是:year minute second day
data_sub(date,interval d_value_type)在date中减去日期或者时间interval后的数值单位可以是:year minute second day
datediff(date1,date2)两个日期的差,单位是天(date1 - date2)
now()当前日期时间
  • 获取年月日

在这里插入图片描述

  • 获取时分秒

在这里插入图片描述

  • 获取时间戳

在这里插入图片描述

  • 提取出日期

在这里插入图片描述

  • 从当前时间中提取日期

在这里插入图片描述

  • 在日期的基础上加日期:
    在这里插入图片描述

在这里插入图片描述

  • 在日期的基础上减去时间:

在这里插入图片描述

  • 计算两个日期之间相差多少天:

在这里插入图片描述

案例:

  • 创建一张表,记录生日

在这里插入图片描述

  • 添加当前日期

在这里插入图片描述

不管是时分秒还是时间戳,都能显示出日期:

在这里插入图片描述

案例:

  • 创建一个留言表

在这里插入图片描述

  • 插入数据

在这里插入图片描述

  • 显示所有留言信息,发布日期只显示日期,不用显示时间

在这里插入图片描述

  • 请查询在2分钟内发布的帖子

在这里插入图片描述

在这里插入图片描述

字符串函数

函数名称描述
charset(str)返回字符串字符集
concat(string2 [,…])连接字符串
instr(string,substring)返回substring在string中出现的位置,没有返回0
ucase(string2)转换成大写
lcase(string2)转换成小写
left(string2,length)从string2中的左边起取length个字符
length(string)string的长度(实际是字节数,utf8中一个汉字占了3个字节)
replace(str, search_str,replace_str)在str中用replace_str替换search_str
strcmp(string1,string2)逐字符比较两字符串大小
substring(str, position [,length])从str的postion开始,取length个字符
ltrim(string) rtrim(string) trim(string)去除前空格或后空格(不影响中间空格,用于数据清洗)

案例:

  • 获取emp表的ename列的字符集

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

注意:length函数返回字符串长度,以字节为单位。如果是多字节字符则计算多个字节数; 如果是单字节字符则算作一个字节。比如:字母,数字算作一个字节,中文表示多个字节数 (与字符集编码有关)

  • 将EMP表中所有名字中有S的替换成’上海’。

在这里插入图片描述

这个替换并不更改数据库中原始的数据

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

在这里插入图片描述

mysql中,字符串下标从1开始

第三个参数表示截取几个字符

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

在这里插入图片描述

  • 去掉字符串的左边空格

在这里插入图片描述

数学函数

函数名称描述
abs(number)绝对值函数
bin(decimal_number)十进制转换二进制
hex(decimalNumber)转换为十六进制
conv(number, from_base,to_base)进制转换
ceiling(number)向上去整
floor(number)向下去整
format(number, decimal_place)格式化,保留小数位数
hex(decimalNumber)转换成十六进制
rand()返回随机浮点数,范围[0.0,1.0)
mod(number, denominator)取模,求余
  • 绝对值

在这里插入图片描述

  • 向上取整(让数字变大)

在这里插入图片描述

在这里插入图片描述

  • 向下取整(让数字变小)

在这里插入图片描述

在这里插入图片描述

  • 保留2位小数位数(小数四舍五入)

在这里插入图片描述

  • 产生随机数

在这里插入图片描述

  • 对一个数进行取模运算

在这里插入图片描述

如果不理解一些数字取模后变成负数,不如理解一下取模的本质:除以一个数的到的余数,比如-10%-3 => -3*3 + -1=-10

其他函数

  • user()查询当前用户

在这里插入图片描述

  • md5(str)对一个字符串进行md5摘要,摘要后得到一个32位字符串

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

判断密码是否相等也需要md5函数:

在这里插入图片描述

  • database()显示当前正在使用的数据库

在这里插入图片描述

  • password()函数,MySQL数据库使用该函数对用户加密(数据库提供的一套更复杂的加密,常用,也是等长的)

在这里插入图片描述

  • ifnull(val1, val2) 如果val1为null,返回val2,否则返回val1的值

在这里插入图片描述

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱写代码的刚子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值