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);