函数:
1、字符串函数:
concat(s1、s2、...sn) 字符串拼接、将s1、s2、...sn拼接为一个字符串;
SELECT CONCAT('yi',' xing');
lower(str) 将字符串转为小写
SELECT LOWER('YIXINgui');
upper(str) 将字符串转为大写
SELECT UPPER('yixingGUI');
lpad(str,n,pad) 左填充,用字符串pad对str的左边进行填充,达到n个字符串
SELECT LPAD('YI',10,'SHUAI');
rpad(str,n,pad) 右填充,用字符串pad对str的右边进行填充,达到n个字符串
SELECT RPAD('GUAGUA',10,'WUDI!');
trim(str) 去掉字符串头部和尾部的空格
SELECT TRIM(' WUDI! GUAGUA ');
substring(str,start,len)在字符串str中从start位置起截取len个长度的字符串
SELECT SUBSTRING('2DADAG2',2,3
);
案例:
SELECT id,LPAD(workno,5,0),`name` FROM emp ORDER BY id desc;--错误示范
SELECT * FROM emp;
UPDATE emp SET workno=LPAD(workno,5,0);--正确示范
2、数值函数:
cel(x) 向上取整;
SELECT CEIL(12.1);
floor(x) 向下取整;
SELECT FLOOR(13.14);
mod(x,y)返回x/y的模;
SELECT MOD(5,2);
rand() 返回0~1内的随机数;
SELECT RAND();
round(x,y)求参数x的四舍五入的值,保留 y位小数。
SELECT ROUND(3.1415926535,5);案例:
随机生成一个6位验证码。
SELECT LPAD(ROUND(RAND(),6)*1000000,6,'0');
3、日期函数:
curdate() 返回当前日期;
curtime() 返回当前时间;
now() 返回当前的日期和时间;
year(date) 获取指定date的年份;
month(date)获取指定date的月份;
day(date) 获取指定date的日期;
date_add(date,interval exper type)返回一个日期/时间值加上一个时间间隔exper后的时间值;
datediff(date1,date2)返回起始时间date1和结束时间date2之间的天数。SELECT CURDATE(); SELECT CURTIME(); SELECT NOW(); SELECT YEAR(NOW()); SELECT MONTH(CURDATE()); SELECT DAY(CURTIME()); SELECT DATE_ADD(NOW(),INTERVAL 14 YEAR); SELECT 0-DATEDIFF('2001-01-09',NOW());
案例:查询入职天数并按其倒序排列。SELECT DATEDIFF(NOW(),entrydate),`name`,id FROM emp ORDER BY DATEDIFF(NOW(),entrydate) desc;
4、流程控制:
if(value,t,f) 如果value位true,则返回t,否则返回f;
ifnull(value1,value2) 如果value1不为空,返回value1;否则返回value2;
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;
SELECT IF(TRUE,'ok','NO');
SELECT IFNULL(NULL,'NONE');
SELECT IFNULL('','NONE');
case WHEN 'TRUE' THEN 'ok' ELSE 'null' END;
SELECT `name`, (CASE workaddress
WHEN '北京' THEN
'一线城市'
WHEN '上海' THEN
'一线城市'
ELSE
'二线城市'
END) AS '工作地址'
FROM emp;
SELECT `name`,CASE age
WHEN 18 THEN
'帅哥'
WHEN 19 THEN
'帅帅哥'
when 20 THEN
'大帅哥'
ELSE
'我是帅哥'
END AS '帅不帅?' FROM emp;