SQL函数--字符串,数值,日期,流程控制函数

-- SQL函数  ---   字符串函数
-- lower
select lower('Hello');

-- upper
select  upper('Hello');


-- lpad   =>  在01的左边加上'-'使长度 为5
select lpad('01',5,'-');

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

-- trim   =>  trim 去掉的是前面和后面的空格 中间的空格还在
select trim(' Hello MySQL');

-- substring   =>这里的索引  是从1开始的
select  substring('Hello MySQL',1,5);


-- 1.由于业务需求变更,企业员工的工号,统一为5位数,前面不足5位数的全部在前面补0.   比如: 1号员工的应该为00001
update emp set workno =lpad(workno,5,'0');


--  ----- 数值函数
-- ceil   向上取整  1.1 => 2
select  ceil(1.1);
-- floor  向下取整  1.1 => 1
select floor(1.1);
-- mod   取余
select  mod(5,4);  #  =>5/4=1...1
select  mod(3,4);  #  =>3/4=0...3
-- rand  随机数
select  rand();

-- round   对2.345进行四舍五入  保留两位小数
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
select  date_add(now(),interval 70 day );  -- 从当前往后推 70天

select  date_add(now(),interval 70 month );  -- 从当前往后推 70月

select  date_add(now(),interval 70 year );  -- 从当前往后推 70年


-- datediff
select  datediff('2021-12-01','2021-11-01');  -- 计算两个时间间隔多久

select  datediff('2021-10-01','2021-11-01');  -- 计算两个时间间隔多久

-- 案例: 查询所有员工的入职天数,并根据入职天数倒叙排序
select name,datediff(curdate(),entrydate) as 'entrydays' from emp order by entrydays desc ;



-- 流程控制函数
-- if
select if(true,'OK','Error');

-- ifnull
select  ifnull('OK','Default');   -- 如果第一个参数 为空 则返回第二个 参数

select  ifnull('','Default');

select ifnull(null,'Default');

-- case when then else end
-- 需求:查询emp表的员工姓名和工作地址(北京/上海 --->一线城市 , 其他 ---->二线城市)

select
    name,
    (case workaddress  when '北京' then '一线城市' when '上海' then '一线城市' else '二线城市' end) as '工作地址'
from emp;





你可能感兴趣的:(数据库,sql)