本文只介绍四种常用内置函数:
- 字符串函数
- concat(s1,s2...):字符串拼接
- lower(str):str全部变小写
- upper(str):str全部变大写
- lpad(str,n,pad):左填充,用pad对str的左边进行填充,达到n个字符串
- rpad(str,n,pad):右填充,用pad对str的右边进行填充,达到n个字符串
- trim(str):去除头部和尾部的空格(注:中间的空格不处理)
- substring(str,start,len):str从start开始截取len个(注:str下标从1开始算起)
- 数值函数
- ceil(x):向上取整
- floor(x):向下取整
- mod(x,y):返回x/y的模
- rand():返回0~1的随机数
- round(x,y):对x四舍五入并保留y个小数位
- 日期函数
- curdata():返回当前日期
- curtime():返回当前时间
- now():返回当前日期和时间
- year(date):返回指定date的年份
- month(date):返回指定date的月份
- day(date):返回指定date的日期
- date_add(date,interval expr type):返回一个日期/时间值加上一个时间间隔expr后的时间值
- datediff(date1,date2):返回起始时间date1和结束时间date2之间的天数
- 流程控制函数:
- if(value,res1,res2):如果value为true则返回res1,否则返回res2
- ifnull(value1,value2):如果value为空则返回value2,否则返回value1
- case when [val1] then [res1] ... else [default] end:如果val1为true则返回res1,否则返回default默认值
- case [expr] when [val1] then [res1] ... else [default] end:如果expr的值等于val1则返回res1,否则返回default默认值
字符串函数
eg:将employee表中的员工工号统一为5位数,如果不满5位数,则前面补0
update emplyoee set workNum = lpad(workNum,5,'0')
数值函数
eg:生成一个六位数的随机验证码
select lpad(round(rand()*1000000),6,'0');
时间函数
eg:查询所有员工的入职天数,并根据入职天数倒叙排序
select name,datediff(curdate(),workDay) as '入职天数' from employee order by '入职天数' desc;