mysql学习笔记-常用函数
一、字符串函数 常用函数: concats(str1,str2,……strn) 字符串拼接 LOWER(str) 字符串转小写 UPPER(str) 字符串转大写 LPAD(str,len,padstr) 左填充,用字符串padstr对str的左边填充,达到n个字符串长度 RPAD(str,len,padstr) 右填充,用字符串padstr对str的右边填充,达到n个字符串长度 TRIM(str) 去掉字符串头部和尾部的空格 SUBSTRING(str,start,len) 返回str从start开始的len个长度的字符串 类似excel mid() -- concat select concat('helo','-','北京') -- lower select lower('BEIJING') -- upper() select upper('beijing') -- lpad select lpad('wuhan',10,'hb') -- result hbhbhwuhan -- rpan select rpad('wuhan',10,'wc') -- result wuhanwcwcw -- trim select trim(' wo ai zhong guo ') -- result:wo ai zhong guo -- substring select substring('武汉国立大学', 1, 2) 练习1 对所有员工编号设置为8位,不足8位在前面补0,继续使用DQL学习的emp表格练习。 select * from emp; update emp set workno=lpad(workno,8,'0'); 二、数值函数 常用函数: CEIL(X) 向上取整 FLOOR(X) 向下取整 MOD(N,M) 返回X/Y的模 RAND() 返回0-1内的随机数 ROUND(X,D) 求参数x的四舍五入,保留D位小数 -- ceil select ceil(2.28); # result 3 -- floor select floor(2.28); # result 2 -- mod select mod(10,3); # result 1 -- rand select rand(); # result 0.8357684918081094 -- round select round(3.1415926,2); # result 3.14 -- 练习1、返回一个6位数随即验证码 select lpad(round(rand()*1000000),6,'0'); # result 098583 三、日期函数 常用函数: CURDATE() 返回当前日期 CURTIME() 返回当前时间 NOW() 返回当前日期加时间 YEAR(date) 获取指定date的年份 MONTH(date) 获取指定date的月份 DAY(date) 获取指定date的日期 DATE_ADD(date,INTERVAL expr unit) 返回一个指定日期/时间值的基础上,加上一个时间间隔expr后的时间值 DATEDIFF(expr1,expr2) 返回起始时间date1和结束时间date2质检的天数 -- CURDATE SELECT CURDATE(); # 2022-07-12 -- CURTIME SELECT CURTIME(); # 12:39:15 -- NOW SELECT NOW(); # 2022-07-12 12:38:42 -- YEAR, MONTH, DAY SELECT YEAR(NOW()); # 2022 SELECT MONTH(NOW()); # 7 SELECT DAY(NOW()); # 12 -- DATE_ADD # 往后推迟70天 SELECT DATE_ADD(NOW(),INTERVAL 70 DAY); # 往后推迟70月 SELECT DATE_ADD(NOW(),INTERVAL 70 MONTH); # 往后退出70年 SELECT DATE_ADD(NOW(),INTERVAL 70 YEAR); #result 2092-07-12 12:43:16 -- DATEDIFF,(date1-date2) SELECT DATEDIFF('2021-12-01','2022-12-01'); # result -365 SELECT DATEDIFF('2022-12-01','2021-12-01'); # result 365 练习1、查询所有员工入职天数,并根据入职天数排序 select name,datediff(curdate(),entydate) as 'entydays' from emp order by entydays desc ; 四、流程函数 常用函数: IF(VALUE,T,F) 如果value为true,返回T,否则返回F IFNULL(expr1,expr2) 如果expr1不为空,返回expr1,否则返回expr2 CASE WHEN [val1] THEN [RES1] ……ELSE[default] END 如果val1为true,返回res1,否则返回defauit默认值 CASE [expr] WHEN [val1] THEN [res1] …… ELSE [default] END 如果expr值等于val1,返回res1,否则返回defauit默认值 -- if select if (true,'答对了','不知道'); # result 答对了 select if(false,'答错了','加油'); # result 加油 -- ifnull select ifnull("",'空的'); select ifnull("da",'空的'); select ifnull(null,'空的'); -- case when then else end -- 查询员工姓名和员工地址,如果员工在北京上海,展示一线城市,其他二线城市 select name, (case workaddress when '北京' then '一线城市' when '上海' then '一线城市' else '二线城市' end) as '是否一线' from emp; 练习1、统计公司员工年龄,如果大于30岁中年,大于20岁青年,否则 少年(可多字段判断) select name, (case when age>30 then '中年' when age>20 then '青年' else '少年' end) as '青少年统计', (case when age>30 then 'zhognnian' when age>20 then 'qn' else 'sn' end) as 'enght' from emp;