MySQL的常用函数有五种:数学函数、字符串函数、日期和时间函数、流程控制函数、其他函数。
数学函数
| 函数表达式 | 意义 | |
| ABS(x) | 返回x的绝对值 | |
| SQRT(x) | 返回非负数x的平方根 | |
| PI() | 返回圆周率 | |
| MOD(x,y)或x%y | 返回x被y除的余数 | |
| CEIL(x)、DEILING(x) | 返回大于或等于x的最小整数值 | |
| FLOOR(x) | 返回小于或等于x的最大整数值 | |
| ROUND(x,y) | 返回保留小数点后面y位,四舍五入的数x | |
| TRUNCATE(x,y) | 返回被舍弃的小数点后y位的数字x | |
| RAND() | 每次产生不同的随机数 | |
| SIGN(x) | 返回x的符号 | |
| POW(x,y)、POWER(x,y) | 返回x的y次方的结果值 | |
| EXP(x) | 返回e的x次方的结果值 |
另外还有RAND(x):返回一个范围在0~1之间的随机浮点数,x为随机种子。
字符串函数
| CHAR_LENGTH(str) | 返回字符串str的所包含字符个数 |
| LENGTH(str) | 返回字符串str的字节长度(一个汉字占两个字节) |
| CONCAT(s1,s2,...) | 字符串连接 |
| CONCAT_WS(x,s1,s2,...) | 字符串连接,x是连接的分割符 |
| INSERT(s1,x,len,s2) | 返回字符串s1,在x位置,长度为len插入s2 |
| LOWER(str)、LCASE(str) | 将字符串全部字符转换成小写 |
| UPPER(str)、UCASE(str) | 将字符串全部字符转换成大写 |
| LEFT(s,n) | 返回最左边指定长度的字符 |
| RIGHT(s,n) | 返回最右边指定长度的字符 |
| LPAD(s1,len,s2) |
在s1左边填充s2,字符串总长度为len |
| RPAD(s1,len,s2) | 在s1右边填充s2,字符串总长度为len |
| TRIM(s1 from s) | 在s两边删除字符s1 |
| LTRIM(s) | 删除字符串s的左侧空格 如" abc" |
| RTRIM(s) | 删除字符串s的右侧空格 如"abc " |
| REPEAT(s,n) | 生成有n个s的字符串 |
| SPACE(n) | 返回一个由n个空格组成的字符串 |
| REPLACE(s,s1,s2) |
将s中的s1替换成s2 |
| STRCMP(s1,s2) | 比较字符串大小,>0左边大,=0相同,<0右边大 |
| SUBSTRING(s,n,len) | 获取从s的第n个字符开始长度为len的字串 |
|
LOCATE(str1,str)、 POSITION(str1 IN str)、 INSTR(str,str1) | 返回在str中str1的开始位置 |
| REVERSE(s) | 将s反转 |
| ELT(n,s1,s2,s3,...) | 返回第n个字符串,若n小于1或大于参数的数目,则返回NULL |
| FORMAT(number) | 将数字number以千分格式显示:1,200.12 |
日期和时间函数
| CURDATE()、CURRENT_DATE() | 获取当前日期 |
| NOW() | 获取当前日期和时间 |
| CURTIME() | 返回当前时间,只包括时分秒 |
| UTC_DATE() | 返回世界标准时间日期 |
| UTC_TIME() | 返回世界标准时间 |
|
TIMEDIFF(date1,date2) | 返回两个日期相差的时间 |
| DATEDIFF(date1,date2) | 返回两个日期相差的天数 |
| DATE_ADD(date,INTERVAL n unit) | 在date上加n个unit,unit为年、月、日等时间间隔 |
| DATE_SUB(date,INTERVAL n unit) | 在date上减n个unit,unit为年、月、日等时间间隔 |
| DATE(date)、TIME(date)、YEAR(date) | 选区日期时间中的各个部分 |
| EXTRACT(unit from date) | 从日期中抽取出某个单独的部分或组合 |
|
DAYOFWEEK(date)、DAYOFMONTH(date)、 DAYOFYEAR(date) | 返回当前是一周、一月、一年中的第几天 |
| DAYNAME、MONTHNAME | 但会日期的星期和月份名称 |
| DATE_FORMATE(date,format) | 格式化日期 |
| TIME_FORMATE(date,format) | 格式化时间 |
| TIMESTAMPDIFF(unit,date1,date2) | 计算date1离date2多少个uint |
附上FORMAT格式表

流程控制函数
常见的控制流程控制函数有:CASE、IF、IFNULL、NULLIF
case:
表达一:
CASE value WHEN compare_value THEN result
WHEN compare_value THEN result ...
ELSE result END;
例子:
SELECT CASE 1 WHEN 1 THEN 'ONE'
WHEN 2 THEN 'TWO'
ELSE 'MORE' END;
表达二:
CASE WHEN condition THEN result
WHEN condition THEN result
ELSE result END;
例子:
SELECT CASE WHEN 1>0 THEN 'true' ELSE 'false' END;
IF:
表达:
IF(exp1,exp2,exp3)
若exp1为真,则返回exp2,否则返回exp3
例子:
SELECT IF(1>2,'yes','no');
IFNULL和NULLIF
表达:
IFNULL(exp1,exp2)或NULLIF(exp1,exp2)
这两个表达式等价
若exp1为空,则返回exp2,否则返回exp1
例子:
SELECT IFNULL(salary,0);
521

被折叠的 条评论
为什么被折叠?



