【MySQL】内置函数

在这里插入图片描述

👦个人主页:@Weraphael
✍🏻作者简介:目前学习计网、mysql和算法
✈️专栏:MySQL学习
🐋 希望大家多多支持,咱一起进步!😁
如果文章对你有帮助的话
欢迎 评论💬 点赞👍🏻 收藏 📂 加关注✨


一、日期函数

在这里插入图片描述

1.1 current_date()

  • 用于获取当前日期,不包含时间部分
select current_date();

在这里插入图片描述

1.2 current_time()

  • 用于获取当前时间,不包含日期部分。
select current_time();

在这里插入图片描述

1.3 current_timestamp()

  • 获取当前时间戳,本质获取当前的日期+时间
select current_timestamp();

在这里插入图片描述

1.4 date()

  • 从日期时间中提取日期部分。

你可以将一个日期时间timestamp类型的列作为参数传递给date()函数,以提取其日期部分。

select date(日期时间);

在这里插入图片描述

1.5 date_add()

  • 用于向指定的日期添加一个时间间隔
select date_add(date, interval value);

其中:

  • date 是要添加时间间隔的日期值。
  • value 是一个表达式,指定要添加的时间间隔,可以是一个整数或一个表达式。该表达式必须是一个正数或一个负数,以指示向前或向后移动日期。
  • interval 关键字用于指定时间间隔的单位。这个单位可以是yearmonthdayhourminutesecond等。

在这里插入图片描述

1.6 date_sub()

  • 用于从指定的日期减去一个时间间隔。
select date_sub(date, interval value);

其中:

  • date 是要添加时间间隔的日期值。
  • value 是一个表达式,指定要添加的时间间隔,可以是一个整数或一个表达式。该表达式必须是一个正数或一个负数,以指示向前或向后移动日期。
  • interval 关键字用于指定时间间隔的单位。这个单位可以是yearmonthdayhourminutesecond等。

在这里插入图片描述

1.7 datediff()

  • 返回两个日期相差多少天,返回值的单位是天。
select datediff(date1, date2);
# 计算的表达式:date1 - date2

在这里插入图片描述

1.8 now()

  • 返回当前日期时间。(等价于时间戳timestamp
select now();

在这里插入图片描述

1.9 案例:留言板

  • 创建一个留言表
create table message(
 	name varchar(32),
	content text,
 	sendtime datetime
);

在这里插入图片描述

  • 插入一些数据如下所示

在这里插入图片描述

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

在这里插入图片描述

  • 日期计算:查询在3分钟内发布的帖子

在这里插入图片描述

select * from message where date_sub(now(), interval 3 minute) <= sendtime;

在这里插入图片描述

二、字符串函数

在这里插入图片描述

2.1 charset()

  • 用来获取字符串的字符集
select charset(str);
# str是要检查的字符串

在这里插入图片描述

2.2 concat()

  • 用于将两个或多个字符串连接在一起
select concat(str1, str2,...);
# str1, str2, ... 是要连接的字符串参数

【使用案例】

假设有学生成绩表exam_result,表中数据如下所示:

在这里插入图片描述

  • 要求显示exam_result表中的信息,显示格式:XXX的语文是XXX分,数学XXX分,英语XXX分
select concat(name, '的语文是',chinese,'分,数学是',math,'分,','英语是',english,'分') as 成绩表 from exam_result;

在这里插入图片描述

2.3 instr()

  • 在一个字符串中搜索指定子字符串的第一次出现的位置,如果未找到子字符串,则返回0。这说明字符串的下标是从1开始的
select instr(str, substr);
# str是原始字符串
# substr 是要查找的子字符串

在这里插入图片描述

2.4 ucase()

  • 将字符串中的所有字符转换为大写形式
select ucase(str);

在这里插入图片描述

2.5 lcase()

  • 将字符串中的所有字符转换为小写形式
select lcase(str)

在这里插入图片描述

2.6 left()

  • 从字符串的左侧截取指定长度的子字符串
select left(str, length);
# str 是要截取的原始字符串
# length 是要截取的长度。

在这里插入图片描述

2.7 right()

  • 从字符串的右侧截取指定长度的子字符串
select right(str, length);
# str 是要截取的原始字符串
# length 是要截取的长度。

在这里插入图片描述

2.8 length() + char_length()

  • 返回字符串的总字节数大小
select length(str);

在这里插入图片描述

由于我默认的字符集是utf8,因此一个汉字是3个字节。

如果你想得到字符数,那么可以使用char_length()

select char_length(str);

在这里插入图片描述

2.9 replace()

  • 用于在字符串中替换指定的子字符串为新的子字符串
select replace(str, old_substring, new_substring);
# str 是要进行替换操作的原始字符串
# old_substring 是要被替换的子字符串
# new_substring 是要替换成的新子字符串。

【使用案例】

假设有员工表emp,表中数据如下所示:

在这里插入图片描述

  • 现要求将emp表中所有名字中有S的替换成上海

在这里插入图片描述

2.10 strcmp()

  • 用于比较两个字符串,并返回一个整数值。
  • 如果两个字符串相等,则返回0;如果第一个字符串小于第二个字符串,则返回负值;如果第一个字符串大于第二个字符串,则返回正值。
select strcmp(str1, str2);

在这里插入图片描述

2.11 substring()

  • 用于从字符串中提取子字符串
substring(str, start);
substring(str, start, length);
# str - 原始字符串
# start 是开始提取的位置,下标从1开始
# length 是要提取的字符数
# 没有第三个参数默认提取到字符串结束

【使用案例】

假设有员工表emp,表中数据如下所示:

在这里插入图片描述

  • 截取emp表中ename字段的第二个到第三个字符
select ename,substring(ename,2,2) from emp;

在这里插入图片描述

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

首先需要将员工姓名首字母变成小写,可以先将首字母和剩下字母进行分开处理,那么可以使用substring函数

select ename,substring(ename,1,1),substring(ename,2) from emp;

在这里插入图片描述

然后再使用lcase函数将首字母变小写

select ename,lcase(substring(ename,1,1)),substring(ename,2) from emp;

在这里插入图片描述

最后再将名字拼接起来,可以使用concat函数

select ename, concat(lcase(substring(ename,1,1)),substring(ename,2)) from emp;

在这里插入图片描述

2.12 ltrim() + rtrim() + trim()

应用场景:当用户在输入表单中输入文本时,可能会不小心在文本的开头或结尾添加了额外的空格。使用这些函数可以轻松地将这些额外的空格去除,确保输入的文本格式正确。

  • ltrim():去除字符串左侧(开头)的空格。

在这里插入图片描述

  • rtrim():去除字符串右侧(结尾)的空格。

在这里插入图片描述

  • trim():去除字符串首尾的空格。

在这里插入图片描述

三、数学函数

在这里插入图片描述

3.1 abs()

  • 绝对值函数
select abs(nums);

在这里插入图片描述

3.2 bin()

  • 转换二进制数
select bin(num);

在这里插入图片描述

注意:如果num是小数,那么它只会将整数部分转化为二进制

在这里插入图片描述

3.3 hex()

  • 转换十六进制数
select hex(num);

在这里插入图片描述

3.4 conv()

  • 执行数字的进制转换。它将数字从一个数字系统(例如二进制、八进制或十六进制)转换为另一个数字系统
conv(num, from_base, to_base);

其中:

  • num 是要转换的数字(以字符串形式表示)。

  • from_base是数字的原始数字系统的基数。

  • to_base是要转换为的目标数字系统的基数。

    在这里插入图片描述

3.5 ceiling() + floor()

  • ceiling():向上取整
  • floor():向下取整
select ceiling(num);
select floor(num);

不管是向上取整还是向下取整,我们只需要画一个数轴出来

在这里插入图片描述

  • 如果是向下取整,就在这个数的下面找一个离它最近的整数。

在这里插入图片描述

  • 同理地,如果是向上取整,就在这个数的上面找一个离它最近的数。

在这里插入图片描述

3.6 format()

  • 格式化函数,将数值保留小数位数
select format(num, decimal_places);
# num 是要格式化的数字。
# decimal_places 是要保留的小数位数

在这里插入图片描述

另外,如果你想要省略小数部分,可以将decimal_places设置为0

在这里插入图片描述

3.7 rand()

  • 函数用于生成一个介于[0,1)之间的随机浮点数
select rand();

3.8 mod()

  • 用于计算两个数的模运算(取余运算)
select mod(n, m);
# N 是被除数
# M 是除数

在这里插入图片描述

四、其他函数

4.1 user()

  • 返回当前登录mysql的的用户名
select user();

在这里插入图片描述

4.2 md5()

  • md5是一种常用的哈希函数,返回一个32位的字符串。
  • 用途:给用户隐私信息进行加密,如密码等。
select md5(任意数值);

在这里插入图片描述

4.3 database()

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

4.4 password()

  • 用于创建一个加密的密码字符串

在这里插入图片描述

4.5 ifnull

  • 用于检查第一个值是否为null
  • 如果expr1null,返回expr2,否则返回expr1的值
select ifnull(expr1, expr2);

在这里插入图片描述

  • 22
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值