文章目录
1.函数的概念以及常用的几种函数
所谓的函数指的是一段可以直接被另一个程序调用的程序或者代码,将这一段经常被调用的代码放到一个子集中,并且给这个子集命名,其他程序咋调用这段代码时,指定子集的名称,就可以运行相应的一段代码,这个子集就是函数。
无论是在各种编程语言还是数据库中都有函数的术语,例如在Shell脚本中,我们可以将经常执行的动作代码做成一个函数,既可以美观我们的代码,又可以减少代码的重复量,哪里需要使用这个逻辑调用函数名即可。
在MySQL数据库中,提供了大量的函数,像前面用到的聚合函数,也是MySQL函数中的一种,按照分类,MySQL常用的函数包含以下几种类型:
- 字符串函数
- 数值函数
- 日期函数
- 流程函数
函数的应用场景非常广泛,在实际工作中,为了更加方便的查询到需要的数据,会大量的使用MySQL提供的函数。
典型的几个案例:
1)公司OA系统会显示出员工入职公司的天数,在员工信息表中记录的都是员工的入职日期,例如2020-10-1,这个日期如何才能转换成具体至今的一个天数。
2)考试系统中对于考试成绩有类别划分,优、中、差,但是在数据库中记录的只是分数,如何才能更好的分类。
基于上述的典型案例,都可以通过MySQL自身提供的函数来快速查询,如果函数不满足我们的需求,还可以人为编写。
使用函数的命令格式:SELECT 函数名(内容)
2.常用的字符串函数以及基本使用
2.1.常用的几种字符串函数
字符串函数是处理内容为字符串的函数。
函数 | 格式 | 功能 |
---|---|---|
CONCAT | concat(字符串1,字符串2,…) | 字符串拼接,将指定的所有字符串拼接成一个字符串 |
LOWER | lower(字符串) | 将字符串全部转换成小写 |
UPPER | upper(字符串) | 将字符串全部转换为大写 |
LPAD | lpad(字符串,字符串总长度,要填充的内容) | 左填充,意思就是在字符串的左边填充内容,首先计算出现有字符串的长度,然后根据指定的字符串总长度进行比较,如果小于总长度那么就在字符串的左侧进行填充,具体填充什么就要看第三部分指定的填充内容,可以是字符串也可以是数字、特殊符号等。 |
RPAD | rpad(字符串,字符串总长度,要填充的内容) | 右填充,意思就是在字符串的右边填充内容,首先计算出现有字符串的长度,然后根据指定的字符串总长度进行比较,如果小于总长度那么就在字符串的右侧进行填充,具体填充什么就要看第三部分指定的填充内容,可以是字符串也可以是数字、特殊符号等。 |
TRIM | trim(字符串) | 去除字符串头部和尾部包含的空格 |
SUBSTRING | substring(字符串,起始位,截取的长度) | 用于截取字符串的长度,首先指定要使用的字符串,然后指定起始位,这个起始位就是从第几个字符串处开始截取,第一个起始位是1,例如我们指定的字符串是jiangxl,要从第三个字符串处开始截取,截取两位,就可以这么写substring(jiangxl,3,2),最终输出的结果就是an |
2.2.CONCAT将多个字符串拼接
CONCAT函数可以将多个字符串进行拼接,形成一个字符串。
select concat('hello','jiangxl');
concat函数可以将多个字符串进行拼接,效果如下,已经将两个字符串hello和jiangxl拼接在了一起。
2.3.LOWER将字符串转换为小写
LOWER函数可以将指定的字符串转换为小写。
select lower('JIAngxl');
lower函数主要是将包含大写字母的字符串转换成了小写字母。
2.4.UPPER将字符串转换为小写
UPPER函数可以将指定的字符串转换为大写。
select upper('jiangxl');
upper函数是将包含小写字母的字符串全部转换成了大写字母。
2.5.LPAD/RPAD字符串左右填充
1)LPAD左填充
UPAD函数主要是在字符串的左侧填充内容,最终达到指定的字符串数量。
select lpad('江' , '5' , '-');
如下图所示,我们指定的字符串是江,要求字符串的长度为5,但是江只是一个字符串,指定的填充内容是-,最终通过lpad左填充函数判断字符串是否与指定的字符串数量一致,如果不一致,则在字符串的最左侧填充-,直到满足字符串的长度。
江字符串只有1个,因此会在江字符串左侧填充4个短横线。
2)RPAD右填充
LPAD函数主要是在字符串的又侧填充内容,最终达到指定的字符串数量,LPAD与RPAD函数的意义相反。
select rpad('江' , '5' , '-');
结果如下,江字符串只有1个,我们指定了字符串的长度为5,通过右填充函数,在字符串的右侧填充4个短横线。
2.6.TRIM去除字符串两侧的空格
指定一串字符串,在字符串的前后都添加很多个空格,通过TRIM函数去除字符串前后的空格。
select trim(' jiangxl devops dba python ')
查询效果如下,字符串前后的空格都被去除了,但是字符串中间的空格不会被去除。
2.7.SUBSTRING截取字符串
SUBSTRING函数用于截取字符串中的部分内容,根据指定的起始位,从起始位处开始截取字符串的内容,最后指定要截取的字符串长度,字符串截取的起始位从1开始。
字符串内容Jiangxl DevOps,从第一个起始位处开始截取,共截取5个长度。
select substring('Jiangxl DevOps',1,5);
查询效果如下,被截取了5个字符串。
2.8.字符串函数的综合使用案例
通过字符串的函数,来实现批量调整人员的ID,当前每个人员的ID都是1/2/3/4/5这种单一数字的ID,我们希望每个人的ID都至少五位,即1调整为00001,10调整为00010。
调整人员的ID就需要用到UPDATE语句了,通过UPDATE语句配合LPAD做填充函数即可实现。
在使用函数处理字符串时,字符串可以是写死的值,也可以是一个字段。
update jszx_xgymjzxxb set id = lpad(id, 5, '0');
修改完成之后,效果如下,至少5个字段,不足五个字段,自动填充。