mysql之函数
前言
讲函数
1. 字符串函数
1.1 concat
select concat('Hello','aaaa');
这个函数的作用就是拼接,当然·也可以拼接多个
select就是打印的意思
1.2 lower
select lower('Hello');
大写转小写
1.2 upper
1.3 lpad
select lpad('01',5,'-');
这个的意思就是在01字符串的左边拼接-,直到总共有了五个字符
1.4 rpad
select rpad('01',5,'-');
1.5 trim
select trim(' aaaaa bbbbb ');
这个函数的作用主要就是去除字符串前面和后面的空格,不去除里面的空格
1.6 substrig
select substring('abcdefghijk',1,5);
这个的作用就是从位置1开始,往后截取5个字符,其中字符串的第一个字符的索引就是1
1.7 练习
练习,将id统一修改为5位数,不足五位数的前面补0
这里的id是varchar
update form set id=lpad(id,5,'0');
2. 数值函数
2.1 ceil
select ceil(1.1);
向上取整
2.2 floor
select floor(1.1);
向下取整
2.3 mod
select mod(6,4);
取模,前面的参数对后面的那个取模
2.4 rand
select rand();
产生随机数,这个随机数是在0~1之间的
2.5 round
select round(2.235,2);
这个的意思就是对2.235四舍五入,并保留两位小数
2.6 练习
生成一个六位数的随机验证码
select round(rand()*1000000,0);
但有些时候也会生成五位数的
为什么呢,因为可能会生成这种小数,0.020371
所以可以考虑前面补0
select lpad(round(rand()*1000000,0),6,'0');
3. 日期函数
3.1 curdate
select curdate();
打印当前日期
3.2 curtime
select curtime();
打印当前时间
3.3 now
select now();
打印日期+时间
3.4 year
select year(now());
打印当前年,但是里面要传入now()
3.5 month
select month(now());
3.6 day
select day(now());
3.7 date_add
select date_add(now(),interval 70 day);
这个表示在当前的时间加上70天
select date_add(now(),interval 70 month);
select date_add(now(),interval 70 year);
3.8 datediff
select datediff('2020-9-9','2020-10-9');
算两个日期相差了多少天,前面的日期,减去后面的日期
3.9 练习
查询所有人的进入日期到现在的天数,并排序,降序
select name,datediff(curdate(),endate) from form;
select name,datediff(curdate(),endate) as 'days' from form order by days desc;
4. 流程函数
4.1 if
select if(true,'ok','ko');
如果第一个参数为true,则返回第二个参数
如果第一个参数为false,则返回第三个参数
4.2 ifnull
select ifnull('ok','aa');
select ifnull(null,'aa');
第一个参数为null的话,就返回第二个参数,第一个不为null,就返回第一个
select ifnull('','aa');
空的字符串也不是null
4.3 case expr when else
如果name为lyx就打印傻子,还有ym也打印傻子,否则打印汉堡
select
name,
case name when 'lyx' then '傻子'end
from form;
case name when ‘lyx’ then '傻子’end
这句话的意思就是当name==lyx就返回傻子
end表示结束
select
name,
case name when 'lyx' then '傻子' when 'ym' then '傻子' end
from form;
连着用就是且的意思
select
name,
(case name when 'lyx' then '傻子' when 'ym' then '傻子' end) as '外号'
from form;
还可以给这个流程函数整体取别名
4.4 case when else
case expr when 就是看等不等于,如果要比什么大于小于的话,还是要看case when
select
name,
case when age>30 then '老年人' else '年轻人' end
from form;
这个的作用就是如果age大于30就是老年人,否则年轻人