【MySQL】内置函数

前言

        hi~ 欢迎来到我的MySQL笔记系列!本篇主要记录学习MySQL数据库中利用函数处理数据的过程。

我的mysql笔记目录如下~

【MySQL】表的增删查改_柒海啦的博客-CSDN博客

【MySQL】表的约束_柒海啦的博客-CSDN博客

【MySQL】表的操作和数据类型_柒海啦的博客-CSDN博客

【MySQL】库的操作_柒海啦的博客-CSDN博客

目录

1.日期函数

-获取日期

-获取时间

-获取时间戳

-日期运算

-案例:创建留言表

2.字符串函数

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

-对表emp每个员工信息进行连接

子串和大小写转换

求字符串所占字节数

替换字符串

比较两字符串大小

-以首字母大写,其余小写的形式显示emp表中员工名字

去掉空格

3.数学函数

4.其他函数


1.日期函数

        日期函数是mysql数据库中提供的一系列关于日期的操作,其中包括日期类型(date、datetime、timestamp)。

-获取日期

        获取当前的年月日:

select current_date();

        通过获取日期时间用date函数进行筛选日期:

select date(now());

-获取时间

        获取当前的时分秒:

select current_time();

-获取时间戳

        获取当前的时间戳(timestamp类型在select查询下默认显示为datetime类型的样子):

select current_timestamp();

 

-日期运算

        在一个日期的基础上,进行不同类型的运算:(day-天、second-秒、minute-分、hour-小时、year-年)。其中date_add为加,date_sub是减。

         需要注意,date可以是date、datetime类型。如果date类型对其做了time类型的操作(second、minute、hour),会从00:00:00开始转化为哦datetime类型进行运算。

        别忘了interval关键字的书写。

        datediff(date1, date2)计算出的单位是day,如果传参传的是datetime类型会转化为date类型。

-案例:创建留言表

        根据上面的日期函数,我们创建一个留言表,用来统计留言人的时间等属性。

create table if not exists message(
    id int unsigned auto_increment primary key,
    content varchar(50) not null,
    sendtime datetime
);

         插入几条数据:

         现在我们显示所有留言信息,发布日期只显示日期,不显示时间:

         现在插入一些数据,然后显示最近一分钟发布的留言:

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

2.字符串函数

        在MySQL中,提供了一些对字符串进行操作的函数,具体如下:

        下面,我们使用Oracle 9i经典测试表进行测试。(表scott_data.sql 使用source执行便可导入测试数据库)

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

        获取字符集也就是编码格式。

select charset(ename) from emp;

 

         除了字符串,也可以查看数值类型,编码格式是二进制类型的。

         charset函数主要就是用来查看对应字符串的编码格式的。如果select查询出来存在乱码,那么一定是编码格式和校验规则不对应问题,所以可以使用此函数进行查看。

-对表emp每个员工信息进行连接

        每个记录的员工信息表示如下:xxx员工恭喜你入职我司xxx职位,雇佣时间为xxx工资为xxx,部门编号xxx。

        我们可以使用concat将每个字符串连接起来。

select concat(ename, '员工恭喜你入职我司', job, '职位,雇佣时间为', date(hiredate), '工资为', sal, ',部门编号是', deptno) from emp;

         可以发现,非str类型同样的可以连接,并且也可以嵌套。

子串和大小写转换

        首先是找子串。利用instr(str1, str2)能找到str2在str1中的位置。注意位置是以1下标开始,没有找到就返回0。

         寻找的单位是字符,不是byte哦~

        另外,我们可以从左边开始提取n个字符组成子串(left(str, n)),也可以从右边开始提取n个字符组成字串(right(str, n));

        我们可以利用ucase和lcase将字符串中的小写字符转化为大写,大写字符转换为小写。

        比如,我们将emp表中所有员工的名字小写显示出来:

求字符串所占字节数

        使用函数length就能计算出长度,但是需要注意单位是byte。

        -比如求如下两个字符串所占字节数:(utf-8汉字占字节数为3byte)

替换字符串

        使用函数replace(str, str1, str2);就能在str中所有str1的地方替换为str2字符串。

比较两字符串大小

        利用函数strcmp(str1, str2)函数,就可以对str1和str2两子串进行比较大小(字典进行比较)。如果str1 > str2 那么返回1,str1 < str2 返回-1,相等返回0。

 

-以首字母大写,其余小写的形式显示emp表中员工名字

        如果要实现题目要求,那么应该将名字分为两部分,第一部分就是首字母,第二部分是后面的部分。而这件事情可以使用函数substring(str, b[, n])进行截取。从b开始,默认截取完,否则截取n个字符形成新的字符串。(注意,第一个字符下标为1)

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

去掉空格

        在有些场景中,比如bash,在有效字符串中前面或者后面带了一些没有用的空格,使用的时候需要去掉(去掉一个字符串的前缀和后缀不需要的空格,字符串中间的空格不会被去掉):

         我们可以使用ltrim去掉左边的空格,rtrim去掉右边,trim全部去掉。

 

3.数学函数

        需要注意,向上取整是朝着正无穷取整,向下取整是向负无穷取整。mod负数取模也是可以的哦。

4.其他函数

函数作用
user();查询当前的用户
md5(str);对str进行一个字符摘要,是32位字符串
database();显示当前正在使用的数据库
password(str);类似于md5,只不过带*的41位摘要
ifnull(val1, val2);val1为null就返回val2,否则返回val1.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值