1.聚合函数
函数 | 作用 | 备注 |
COUNT() | 计数 | |
SUM() | 求和函数 | |
AVG() | 求平均数 | |
GROUP_CONCAT() | 拼接 | GROUP_CONCAT([DISTINCT]字段名 [ORDER BY 排序字段] [SEPARATOR'分隔符'] |
2.数学函数
函数 | 作用 | 备注 |
ABS(x) | 求绝对值 | SELECT ABS(-1)#返回1 |
CEIL(x)/FLOOR(x) | 返回大于/小于或等于x的最小整数 | SELECT CEIL(1.5)#返回2; SELECT FLOOR(1.5)#返回1 |
GREATEST(expr1,expr2,...)/ LEAST(expr1,expr2,...) | 返回列表中的最大/小值 | SELECT GREATEST(1,2,3)#返回3; SELECT LEAST('a','aa','aaa')#返回a |
MAX()/MIN() | 返回字段中的最大/小值 | |
MOD(x,y) | 返回x除以y之后的余数 | SELECT MOD(5,2)#返回1 |
PI() | 返回圆周率 | |
POW(x,y) | 返回x的y次方 | SELECT POW(2,3)#返回8 |
RAND() | 返回0-1之间的随机数 | |
ROUND(x,y) | 返回x的指定位数的小数,遵循四舍五入,y不指定则小数位数为0 | SELECT ROUND(2.3123)#返回2 SELECT ROUND(2.3123,1)#返回2.3 |
TRUNCATE(x,y) | 不遵循四舍五入,直接舍去小数 |
3.字符串函数
注:SQL字符串是从1开始编号的
函数 | 作用 | 备注 |
CHAR_LENGTH(str)/ LENGTH(str) | 返回字符串长度函数 | 区别:SELECT CHAR_LENGTH('你好');#返回2;SELECT LENGTH('你好');返回6;英文是一样的 |
CONCAT(str1,str2,...)/ CONCAT_WS(separator,str1,str2,...) | 组合字符串 | CONCAT_WS()的separator可执行分隔符 |
FIELD(str,str1,str2,str3,...) | 返回字符串在列表中的位置 | SELECT FIELD('a','aaa','a');返回2 |
LTRIM(str)/RTRIM(str)/TRIM( str) | 去除左/右/两端的空格 | |
MID(str,pos,len) | 字符串截取 | |
POSITION(substr IN str) | 获取字符串A在字符串B中的位置 | SELECT POSITION('a' IN 'bas');#返回2 |
REPLACE(str,from_str,to_str) | 字符串替换 | SELECT REPLACE('abbs','s','c');#返回abbc |
REVERSE(str) | 字符串翻转 | |
RIGHT(str,len)/LEFT(str,len) | 返回字符串的后/前几个字 | |
STRCMP(expr1,expr2) | 字符串比较,两个字符串字典里出现的先后顺序 | |
SUBSTR(str FROM pos FOR len) | 字符串截取 | |
UCASE()/upper(str) | 将小写转为大写 | |
LCASE(str)/LOWER(str) | 将大写转换为小写 |
4.日期函数
函数 | 作用 |
UNIX_TIMESTAMP() | 获取毫秒值 |
UNIX_TIMESTAMP | 将一个日期字符转为毫秒值 |
FROM_UNIXTIME(unix_timestamp) | 将毫秒值转为指定格式的日期 |
CURDATE()/CURRENT_DATE() | 获取当前的年月日 |
CURTIME()/CURRENT_TIME() | 获取当前的时分秒 |
CURRENT_TIMESTAMP() | 获取年月日和时分秒 |
DATE(expr) | 从日期中获取年月日 |
DATEDIFF(expr1,expr2) | 计算两个日期之间的天数 |
TIMEDIFF(expr1,expr2) | 计算时间的差值(秒级) |
DATE_FORMAT(date,format) | 转换日期的格式 |
STR_TO_DATE(str,format) | 将字符串转为日期 |
DATE_SUB(date,INTERVAL expr unit)/DATE_ADD(date,INTERVAL expr unit) | 将日期进行减(加)法 |
EXTRACT(unit FROM date) | 从日期中获取小时/分/秒(unit) |
LAST_DAY(date) | 获取给定日期的最后一天 |
MAKEDATE(year,dayofyear) | 获取指定年份和天数的日期 |
YEAR(date),MONTH(date),QUARTER(date) | 跟去日趋获取年月日 |
DAYOFWEEK(date),WEEKOFYEAR(date) | 根据日期获取 |
日期格式参考
5.控制流函数
函数 | 作用 | 备注 |
IF(expr1,v1,v2) | 如果expr1成立,则返回v1,否则返回v2 | SELECT *,if(score>85,"及格","优秀") flag FROM score; |
IFNULL(expr1,expr2) | ||
ISNULL(expr) | 判断是不是为空值,返回0和1 | |
NULLIF(expr1,expr2) | 两个字符串是否一样,如果一样则null,否则返回第一个字符串 | |
CASE | 搜索语句 | #CASE case_value # WHEN when_value THEN # statement_list # ELSE # statement_list #END CASE; |
6.窗口函数
窗口使用要在MySQL8.0以上,且比较重要,所以另起一节进行说明
窗口函数详见