数据库 08 -- SQL函数

127 阅读1分钟

函数是指一段可以直接被另一段程序调用的程序或代码。

1 . 字符串函数

0595.png

例: 如果要让表中所有人员的工号变成五位,不足的在前面补 0

// 是要更新数据
update info set worknumber = lpad(worknumber , 5 , '0') ; 即可

2 . 数值函数

0596.png

例: 生成一个六位的随机验证码

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

3 . 日期函数

0597.png

  • date-add()
//看当前时间往后推 70 天后的时间
select date-add(now() , interval 70 day);
//70 个月
select date-add(now() , interval 70 month);
  • datediff()
// 查询两个日期之间的差值

select datediff('2021-10-01' , '2022-08-07');

例: 查询所有员工入职天数 ,并根据结果倒序排序

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

4 . 流程控制函数 (在SQL语句中实现条件筛选,从而提高语句的效率)

0598.png

  • select if(true , 'OK' , 'ERROR'); // 'OK'

  • select ifnull('OK' , 'Default') // 'OK'

    • select ifnull(null , 'Default') // 'Default'
  • case when then else end

    • 查询表 ,如果员工工作地址为北京上海,则显示一线城市,其他显示二线城市
    • select name , (case workplace when '北京' then '一线城市' when '上海' then '一线城市' else '二线城市' ) as '工作地址' from info;

例: 统计班级同学成绩 ,>=85 展示优秀 ;>=60 展示及格 ;其他, 展示不及格。

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