【MySQL数据库入门到精通-07 函数-字符串函数、数值函数、日期函数和流程函数】


一、字符串函数

1. MySQL中的函数主要分为以下四类: 字符串函数、数值函数、日期函数、流程函数。下面是字符串函数常见的函数,见下表。

在这里插入图片描述

2.具体代码实现

代码如下(示例):

-- 函数演示 --
-- concat
select concat('学习','MySQL数据库');
-- lower
select lower('HELLO');
-- upper
select upper('hello');
-- lpad
select lpad('01',5,'-');-- 5的意思是填充到5位,01两位,左填充到5位就是---01
-- rpad
select rpad('01',5,'-');-- 5的意思是填充到5位,01两位,右填充到5位就是01---
-- trim 去除头部和尾部空格
select trim('  Hello  MySQL  ');
-- substring 字符串截取
select substring('Hello MySQL',1,5); -- 1的意思是从哪个位置开始截取,5是截取多少个 Hello

-- 1.由于业务需求变更,企业员工的工号统一为8位数,目前不足8位数的全部在前面补0.比如:1号员工的工号应该为00000001
-- 以emp举例
use itcast;
show tables;
update emp set workno=lpad(workno,8,0);

3.结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

二、数值函数

1.知识点

常见的数值函数如下:
在这里插入图片描述

2.具体代码实现

代码如下(示例):

-- 数值函数
-- 1.向上取整ceil
select ceil(1.1);
-- 2.向下取整floor
select floor(1.9);
-- 3.取模mod
select mod(7,4);
-- 4.获取随机数rand 获取出来的随机数是在0-1之间
select rand();
-- 案例:通过数据库的函数,生成一个6位数的随机验证码
-- 思路:获取随机数可以通过rand()函数,但是获取的随机数是在0-1之间,所以可以在其基础上乘以1000000,然后舍弃小数部分,如果长度不足6位,补0
select lpad(round((rand()*1000000),0),6,'0');

3.结果

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、日期函数

1.知识点

在这里插入图片描述

2.具体代码实现

代码如下(示例):

-- 函数演示 --
-- 日期函数
-- 1.curdate当前日期
select curdate();
-- 2.curtime当前时间
select curtime();
-- 3.now当前日期和时间
select now();
-- 4.year month day当前年 月 日
select year(now());
select month(now());
select day(now());
-- 5.增加指定的时间间隔
select date_add(now(),interval 70 year);
-- 6.获取两个日期相差的天数
select datediff('2025-04-27','2024-09-07');
-- 案例:查询所有员工的入职天数 并根据入职天数倒序排列
-- 思路:入职天数就是通过当前日期-入职日期,所以通过datediff函数完成
select name,datediff(curdate(),entrydate)  as '员工的入职天数'from emp order by entrydate desc;

3.结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四、流程函数

1.知识点

流程函数也是很常用的一类函数,可以在SQL语句中实现条件筛选,从而提高语句的效率。
在这里插入图片描述

2.具体代码实现

代码如下(示例):

-- 流程函数
-- 1.if(value,t,f) 如果value为true,则返回t,否则返回f
select if(false,'OK','Error');
-- 2.ifnull(value1,value2) 如果value1不为空,返回value1,否则返回value2
select ifnull('OK','Default');
select ifnull('','Default');
select ifnull(null,'Default');
-- 3.case when[vall] then[res1]... else[default] end
-- 如果vall为true 返回res1... 否则返回default的默认值
-- 需求:查询emp表的员工姓名和工作地址(北京上海显示一线城市,其他显示二线城市)
select name,
       (case workaddress when '北京' then '一线城市'
                        when '上海' then '一线城市'
                                   else '二线城市' end)
       as '工作城市'
from emp;

-- 4.case[expr] when[vall] then [res1]... else[default] end
-- 如果expr的值等于vall 返回res1... 否则返回default默认值
create table score(
    id int comment 'ID',
    name varchar(20) comment '姓名',
    math int comment '数学',
    english int comment '英语',
    chinese int comment '语文'
) comment '学员成绩表';
insert into score(id, name, math, english, chinese)
            values (1,'Tom',67,88,95),
                   (2,'Rose',23,66,99),
                   (3,'Jack',56,98,76);

select id,name,
       (case when math>=85 then '优秀'
            when math>=60 then '不及格' end)
            as '数学等级',
       (case when english>=85 then '优秀'
            when english>=60 then '不及格' end)
            as '英语等级',
       (case when chinese>=85 then '优秀'
            when chinese>=60 then '不及格' end)
            as '语文等级'
from score;

3.结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿康Obliviate

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值