(一)字符串函数
字符串函数 | 功能 |
CONCAT(S1,S2,...Sn) | 字符串拼接,将S1,S2,...Sn拼接成一个字符串 |
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个长度的字符串 |
-- 连接字符串
select concat('Hello','World');
-- 将字符串str全部转换成小写
select lower('Hello');
-- 将字符串str全部转换成大写
select upper('Hello');
select lpad(13,5,'-');
select rpad(13,5,'abcde');
select trim(' Hello World ');
select substring('Hello World',1,7);
(二)数值函数
数值函数 | 功能 |
CEIL(x) | 向上取整 |
FLOOR(x) | 向下取整 |
MOD(x,y) | 返回x/y的模 |
RAND() | 返回0~1内的随机数 |
ROUND(x,y) | 求参数x的四舍五入的值,保留y位小数 |
案例:通过数据库函数,随机生成六位验证码
(三)日期函数
常见的日期函数:
日期函数 | 功能 |
CURDATE() | 返回当前日期 |
CURTIME() | 返回当前时间 |
NOW() | 返回当前日期和时间 |
YEAR(date) | 获取指定date的年份 |
MONTH(date) | 获取指定date的月份 |
DAY(date) | 获取指定date的日期 |
DATE_ADD(date,INTERVAL expr type) | 返回日期/时间值加上时间间隔expr后的值 |
DATEDIFF(date1,date2) | 返回起始时间date1和结束时间date2之间的天数 |
select date_add('2015-08-08',interval 1 year); # 2016-08-08
select date_add('2015-08-08',interval 13 month); # 2016-09-08
select datediff('2015-08-08','2015-09-08'); # -31
案例:查询staff_1表中职工的入职天数,按照降序排列
(四)流程控制函数
流程函数是开发中很常用的一类函数,可以在SQL语句中实现条件筛选,从而提高语句的效率。
流程函数 | 功能 |
IF(value, a,b) | 如果value为true,返回 a,否则返回 b |
IFNULL(value1,value2) | 如果value1不为空,返回value1,否则返回value2 |
CASE WHEN [val1] THEN [res1] WHEN [val2] THEN [res2]...ELSE [default] END | 如果val1为true,返回res1,如果val2为true,返回res2,...否则返回default默认值 |
CASE [expr] WHEN [val1] THEN [res1]...ELSE [default] END | 如果expr的值为val1,返回res1,...否则返回default默认值 |
select if(3 > 1, 'OK', 'No'); # OK
select ifnull('m', 'default'); # m
select ifnull(null, 'default'); # default
select ifnull('', 'default'); # 空字符串不等同于null,输出结果为空字符串
案例:将员工按照年龄归档,例如,20-29岁归为二十档