一. 单行函数
1.1 字符函数
length();
获取参数值的字节个数 例:SELECT LENGTH('axiba');
concat();
拼接字符串 例:SELECT CONCAT(name1,'_',name2) 姓名 FROM test;
upper()、lower();
改变大小写 例:SELECT UPPER('axiba'); SELECT LOWER('Axiba');
substr()、substring();
截取字符串 例:
# 截取从指定索引处后面所有字符 SELECT SUBSTR('axiba',2) str; #截取从指定索引处指定字符长度的字符 SELECT SUBSTR('axiba',1,3) str;
instr();
返回子串第一次出现的索引,如果找不到返回0 例:SELECT INSTR('axiba','x') AS idx;
trim();
去除字符串两边指定字符默认为空格 例:SELECT TRIM('xx' FROM 'xxaxibaxx') AS str;
lpad();
用指定的字符实现左填充指定长度 例:SELECT LPAD('axiba',6,'*') AS str;
rpad ();
用指定的字符实现右填充指定长度 例:SELECT RPAD('axiba',8,'*') AS str;
replace();
替换 例:SELECT REPLACE('阿西吧','西','东') AS str;
1.2 数学函数
round();
四舍五入保留小数位数 例:SELECT ROUND(1.56); SELECT ROUND(1.567,2);
ceil();
向上取整 例:SELECT CEIL(1.2);
floor();
向下取整 例:SELECT FLOOR(1.2);
truncate();
截断 例:SELECT TRUNCATE(0.69999,1);
mod();
取余 例:SELECT MOD(10,-3);
1.3 日期函数
now();
返回当前系统日期+时间 例:SELECT NOW();
curdate();
返回当前系统日期,不包含时间 例:SELECT CURDATE();
dateDiff();
返回两个日期之间的天数 例:SELECT dateDiff(NOW(),'%y年%m月%d日') AS d;
curtime();
返回当前时间,不包含日期 例:SELECT CURTIME();
YEAR();
可以获取指定的部分,年、月、日、小时、分钟、秒 例:SELECT YEAR(hiredate) 年 FROM test;
str_to_date();
将字符通过指定的格式转换成日期 例:SELECT STR_TO_DATE('1998-3-2','%Y-%c-%d') AS str_date;
date_format();
将日期转换成字符 例:SELECT DATE_FORMAT(NOW(),'%y年%m月%d日') AS str_date;
1.4 其他函数
VERSION();
查看当前数据库管理系统版本号DATABASE();
查看当前数据库USER();
查看当前用户
1.5 控制函数
if();
流程控制 例:SELECT IF(2<1,'大','小');
case();
流程控制
语法1: case 要判断的字段或表达式
when 常量1 then 要显示的值1或语句1;
when 常量2 then 要显示的值2或语句2;
…
else 要显示的值n或语句n;
end
例:SELECT 原始工资,id, CASE id WHEN 30 THEN 原始工资*1.1 WHEN 40 THEN 原始工资*1.2 WHEN 50 THEN 原始工资*1.3 ELSE 原始工资 END AS 新工资 FROM table;
语法2: case
when 条件1 then 要显示的值1或语句1
when 条件2 then 要显示的值2或语句2
。。。
else 要显示的值n或语句n
end
例:SELECT 工资, CASE WHEN 工资>20000 THEN 'A' WHEN 工资>15000 THEN 'B' WHEN 工资>10000 THEN 'C' ELSE 'D' END AS 工资级别 FROM table;
二、分组函数
sum()
求和 例:SELECT SUM(salary) FROM table;
avg ()
平均值 例:SELECT AVG(salary) FROM table;
max()
最大值 例:SELECT MAX(salary) FROM table;
min()
最小值 例:SELECT MIN(salary) FROM table;
count()
计算个数 例:SELECT COUNT(salary) FROM table;
分组函数注意事项:
1、sum、avg一般用于处理数值型max、min、count可以处理任何类型
2、以上分组函数都忽略null值
3、可以和distinct搭配实现去重的运算(去重之后再求和)
4、count函数的单独介绍一般使用count(*)用作统计行数
5、和分组函数一同查询的字段要求是group by后的字段