数据库-MySQL-基础-函数

举报
莫浅子 发表于 2022/10/02 22:19:07 2022/10/02
【摘要】 ​ 函数函数:是指一段可以被直接调用的函数或者代码字符串函数常用函数MySQL内置了很多字符串函数,常用的几个如下​编辑 例子  -concat(字符串拼接)select concat('hello','MySQl');​编辑  -lower(字符串转化为小写)select lower('Hello'); ​编辑 -upper(字符串转化为大写)select upper('Hello');...

 函数

函数:是指一段可以被直接调用的函数或者代码



字符串函数

常用函数

MySQL内置了很多字符串函数,常用的几个如下

编辑

 例子

  -concat(字符串拼接)

select  concat('hello','MySQl');

编辑


  -lower(字符串转化为小写)

select lower('Hello');

 编辑

 

-upper(字符串转化为大写)

select upper('Hello');

编辑


-lpad(左填充)

select  lpad('01',5,'-');

为什么填充三个,本身字符串的长度就为2了填充3个正好等于5 

编辑


-rpad(右填充)

select rpad('01',5,'-');

编辑


-trim(去除左右空格)

select  trim(' Hello MySQL ');

 编辑


 -substring(计算字符串长度)

select substring('Hello MySQL',1,5);

编辑


练习

根据业务需求变更,明星员工的id,统一为5位数,目前不足五位数的全部在后面补0。比如:1号明星的工号为10000

初始表

编辑

 代码

update start_table set id = rpad(id,5,'0');

实现后

编辑




数值函数

常见函数

编辑

 注意:求模就是除于一个数然后取余


代码实现

--数值函数

--ceil
select ceil(1.2);

--floor
select floor(1.9);

--mod
select mod(3,4);

--rand
select rand();

--round
select round(2.345,2);


案例练习

通过数据库的函数,生成一个六位数的随机验证码

select lpad(round(rand()*1000000,0),6,'0');



日期函数

常见函数

编辑


代码实现

--日期函数

--curdate() 显示当前日期几年级月几日
select  curdate();

--curtime() 显示当前时间几时几分几秒
select  curtime();


--now()   显示当前日期和时间
select now();

--YEAR ,MONTH,DAY

--显示当前年份
select year(now());

--显示当前月份
select MONTh(now());

--显示当前天数
select DAY(now());

--date_add
--当前时间往后推70天
select date_add(now(),INTERVAL 70 DAY);
--当前时间往后推70月
select date_add(now(),INTERVAL 70 MONTH );

--datediff(读取俩个日期之间的差值)
select datediff('2022-12-30','2022-10-01');


案例

查询所有员工入职天数,并根据入职天数和倒叙排序

select name, datediff(curdate(),entrydate) as 'entrydate' from emp order by entrydate desc ;




流程函数

常用函数

流程函数是一种常见函数,可以在SQL中实现条件筛选,从而提高语句的效率

编辑


--if
select if(true,'OK','error');


--ifnull
--只有第三种情况返回DEfault
select ifnull('OK','DEfault');

select ifnull('','DEfault');

select ifnull(null,'DEfault');

select ifnull('null','DEfault');

--case when then else end
--需求: 查询start_table表中明星的姓名和地址(如果地址为上海北京,展示为一线城市,其他展示为二线)
select
   name,
   ( case address when '北京' then '一线城市' when '上海' then '一线城市' else '二线城市' end) as '工作地址'
from start_table;


案例

统计班级各个学院的成绩,展示的规则如下:

-- >= 85,展示优秀

-- >=60,展示及格

--否则不及格 

建一个表格

编辑

 代码

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

编辑


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。