👦个人主页:@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
关键字用于指定时间间隔的单位。这个单位可以是year
、month
、day
、hour
、minute
、second
等。
1.6 date_sub()
- 用于从指定的日期减去一个时间间隔。
select date_sub(date, interval value);
其中:
date
是要添加时间间隔的日期值。value
是一个表达式,指定要添加的时间间隔,可以是一个整数或一个表达式。该表达式必须是一个正数或一个负数,以指示向前或向后移动日期。interval
关键字用于指定时间间隔的单位。这个单位可以是year
、month
、day
、hour
、minute
、second
等。
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
值- 如果
expr1
为null
,返回expr2
,否则返回expr1
的值
select ifnull(expr1, expr2);