mysql 学习8 函数,字符串函数,数值函数,日期函数,流程函数
函数
一 字符串函数
mysql 中的所有函数 都可以使用 select 函数(参数) 验证
select concat('he','llo','mysql'); # hellomysql select lower('HHJLLD'); select upper('hello'); select lpad('he',5,'-po');# pohe select lpad('he',5,'-a');# -a-he select rpad('ni',9,'v'); # nivvvvvvv select trim(' nihao mysql '); # nihao mysql select substring('nihao',1,1); # n select substring('nihao',1,2); # ni
案例
企业员工工号统一变成9位数,不足5位数的全部在前面补0,比如1号员工的工号应该为00001。
之前的工号是这样的:
很显然这个是要update emp 这张表
update emp set id = lpad(id,5,'0'); #这里执行没有问题,也没有提示,实际上是不行的,id我们定义的是 int,lpad函数需要的是string 正确的写法 update emp set workno = lpad(workno,5,'0');
二 数值函数
select ceil(1.2); # 2 向上取整 select floor(9.9); # 9 向下取整 select mod (5,4); # 1 求余数 select rand(); # 0 到 1 之间的一个小数 select round(3.4); # 四舍五入 select round(3.67,1); # 对3.67进行四舍五入,保留一位小数,结果是3.7 #通过数据库函数,生成一个6位的随机验证码 select lpad(round(rand()*1000000,0),6,0);
三 日期函数
# 日期函数 select curdate(); # 2025-02-05 select curtime(); # 21:26:29 select now(); # 2025-02-05 21:26:54 select year(curdate()); # 2025 select year('1990-09-08'); #1990 select year(now());# 2025 select yearweek(now()); #202505 select yearweek('2025-01-01'); #202452 select month(curdate()); # 2 curdate 2025-02-05,因此是2 select day(curdate()); # 5 curdate 2025-02-05,因此是5 select date_add('2020-01-01',INTERVAL 1 day); #2020-01-02 select date_add('2020-01-30',INTERVAL 1 month ); #2020-02-29 可以看到,1个月在 mysql中就是30day select datediff('2000-01-01','2000-01-03'); #-2 select datediff('2000-01-03','2000-01-01'); #2
#查询所有员工的入职天数,并根据入职天数 倒序 排序 select name,datediff(curdate(), entrydate ) as 'entrydays' from emp order by entrydays desc ;
四 流程函数
select if(true ,'ok','error'); # ok select if(false ,111,222); # 222 select ifnull(111,333); #111 select ifnull('nihao',555); #nihao select ifnull('',666); #'' select ifnull(null,888); #888 #查询员工表 中的员工姓名和 工作地址,(如果工作城市在上海,北京,广州则显示一线城市,其余显示 二线城市 select name, (case workaddress when '上海' then '一线城市' when '北京' then '一线城市' when '广州' then '一线城市' else '二线城市' end) as '工作地点' from emp;