本篇分享一些在MySQL中常见的一些内置函数,如日期函数,字符串函数和数学函数,以方便于操作数据库中的数据。
1.日期函数
我们先整体观察一下这些函数再讲解案例
日期函数使用起来都非常就简单
获得年月日:
select current_date();
这里就可以获得当前的日期
获得时分秒:
select current_time();
获得了当前的时分秒。
获得时间戳:
时间戳就是当前的日期和时间
select current_timestamp();
和他用法同样的还有
select now();
获取设计的日期:
select date('2018-10-1 00:00:00');
可以看到我们date括号内设置了年月日还有时分秒
但是运行的结果只有年月日。
同样可以以嵌套的方式使用
在日期的基础上增加日期:
先获取一个时间
在使用函数增加时间
select date_add(now(),interval 40 day);
我们增加了40天,可以看到函数可以根据日历来推断增加的日期。
在日期的基础上减去时间:
select date_sub(now(),interval 40 day);
还是刚刚的时间减去四十天
计算两个日期之间相差多少天:
select datediff('2024-9-12','2024-6-15');
使用datediff函数
可以看到返回了一个数字,相差89天。
使用案例1:
创建一张表,记录生日
create table tmp(id int primary key auto_increment,birthday date
);
添加当前日期:
insert into tmp(birthday) values (currt_date());
可以看到表中就可以将当前的年月日添加进去了
使用案例2:
创建一个留言表,类似于刷视频或者文章时想评论的表。
创建表
reate table msg (id int primary key auto_increment,content varchar(30) not null,sendtime datetime);
再插入两条评论和当前时间
insert into msg (content,sendtime) values ( '醉里挑灯看剑',now());
insert into msg (content,sendtime) values ( '知来者之可追',now());
这就是带有时间时间类型的表结构案例。
2.字符串函数
先浏览都有哪些字符串函数
获得编码格式:
select charset(string);
可以看到我们所用的编码格式时utf-8的编码格式
编辑的中文也同样如此。
连接字符串:
select concat(string1,string2,....);
它可以将括号内的内容转成字符串进行拼接。
返回一个字符串在另一个字符串中出现的位置:
instr(string,substring)
可以看到1234出现的位置在第五个位置上。
转换成大写:
ucase(string)
转换成小写:
lcase(string)
取指定长度字符 :
select left(string,lenth);
从string的左边起取length个字符
同样的使用right也是可以的
求字符串长度:
length(string);
返回的数字即为字符串的长度。
使用案例1:拼接
要求显示exam_result表中的信息,显示格式:“XXX的语文是XXX分,数学XXX分,英语XXX分”
我们用之前的成绩表举例
我们先将表整合一下
再使用concat将筛选出来信息连接起来。
select concat('考生姓名:',name,'总分:',chinese+math+english,'语文成绩:',chinese,'数学成绩:',math,'英语成绩:',english) msg from exam_result;
使用案例2:求字符长度
求学生表中学生姓名占用的字节数
select name,length(name) from exam_result;
这个案例的意义是因为在Mysql中每一个汉字每一个字符,比如唐三藏每一个字都有它们对应的一个大小,一个字符就占了三个字节的大小,因为他是utf-8编码的,所以三个汉字会显示九个字节,但是字母和数字只占一个字节。
使用案例3:替换
将EMP表中所有名字中有S的替换成'上海、
以下是案例表
之后我们使用replace函数即可替换表中的内容
select replace(ename, 'S', '上海') ,ename from EMP;
使用案例4:截取
截取EMP表中ename字段的第二个到第三个字符
select substring(ename, 2, 2), ename from EMP;
使用案例5:以首字母小写的方式显示所有员工的姓名
先观察表中的内容,员工姓名都为大写
再使用substring将员工姓名的首字母和后面的字母都截取出来
sselect enam,subting(ename,1,1),substring(ename,2) from emp;
再按题目要求转换大小写
select enam,lcase(subting(ename,1,1)),substring(ename,2) from emp;
再将两个部分做拼接
select enam,concat(lcase(subting(ename,1,1)),substring(ename,2)) from emp;
至此题目的要求完成。
3. 数学函数
数学函数的使用都较为简单,以下为使用案例
求绝对值:
select abs(-12);
十进制转换为二进制
select bin(10);
十进制转化为十六进制
select hex(11);
将一个数字转换为另一个进制
conv(number,from_base,to_base)
例如将数字10,从十进制转化为二进制
或者将数字10从十进制转化为五进制
取模,求余
mod(number,denominator)
负数求余也可以
生成随机数
rand()
rand()函数生成的随机数的区间在[0.0,1.0)之间,
那如果我们需要生成一个0到99之间的随机数,只需要乘以99就可以了
以上既是一些MySQL中常用的一些函数,希望对你有所帮助,感谢你的阅读