单行函数
接收一个参数并返回一个结果
函数之间可以嵌套
参数可以是一个字段,也可以是一个值
数值函数
函数 | 用法 |
---|---|
ABS(x) |
返回x的绝对值 |
SIGN(x) |
返回x的符号,正数返回1,负数返回-1, 0返回0 |
PI() |
返回圆周率的值 |
CEIL(x) CEILING(x) |
向上取整 |
FLOOR(x) |
向下取整 |
MOD(x,y) |
取x/y的余数 |
LEAST(x1,x2...xn) |
取参数中的最小值 |
GREATEST(x1,x2...xn) |
取参数中的最大值 |
RAND() |
返回(0, 1)随机数 |
RAND(x) |
返回(0, 1)随机数,x作为种子,相同的x会返回相同的随机数 |
ROUND(x) |
四舍五入 |
ROUND(x, y) |
对x进行四舍五入,y是保留的小数位 |
TRUNCATE(x, y) |
对x进行截断,y是保留的小数位 |
SQRT(x) |
平方根 |
RADIANS(x) |
角度转为弧度,x为角度 |
DEGREES(x) |
弧度转为角度,x为弧度 |
SIN(x) |
正弦,x为弧度 |
ASIN(x) |
反正弦,x为弧度,如果x不在-1到1之间,返回null |
COS(x) |
余弦,x为弧度 |
ACOS(x) |
反余弦,x为弧度,如果x不在-1到1之间,返回null |
TAN(x) |
正切,x为弧度 |
ATAN(x) |
反正切,x为弧度 |
ATAN2(x, y) |
返回两个参数的反正切,x为弧度 |
COT(x) |
余切,x为弧度 |
POW(x,y) POWR(x, y) |
x的y次方 |
EXP(x) |
e的x次方 |
LN(x) LOG(x) |
e为底,x的对数 |
LOG10(x) |
10为底,x的对数 |
LOG2(x) |
2为底,x的对数 |
BIN(x) |
返回x的二进制 |
HEX(x) |
返回x的十六进制 |
OCT(x) |
返回x的八进制 |
CONV(x, f1,f2) |
返回f1进制数变为f2进制数 |
字符串函数
函数 | 用法 |
---|---|
ASCII(s) |
s的ASCII |
CHAR_LENGTH(s) |
s的字符个数 |
LENGTH(s) |
s的字节个数 |
CONCAT(s1,s2...sn) |
将多个字符串拼接起来 |
CONCAT_WS(x, s1,s2...sn) |
将多个字符串通过x连接起来 |
INSERT(str, idx,len, replaceStr) |
将字符串str从idx索引开始取len长度的字符,替换为replaceStr(索引是从1开始的) |
REPLACE(str, a, b) |
将字符串中的a替换为b |
UPPER(s) UCASE(s) |
将s转为大写 |
LOWER(s) LCASE(s) |
将s转为小写 |
LEFT(s, n) |
取s中的前n个字符 |
RIGHT(s,n) |
取s中的后n个字符 |
LPAD(s, len, pad) |
将s字符串的长度从左边补充到len长度,填充符是pad |
RPAD(s, len, pad) |
将s字符串的长度从右边补充到len长度,填充符是pad |
TRIM(s) |
去除s中的首尾空格 |
LTRIM(s) |
去除s中头部的空格 |
RTRIM(s) |
去除s中尾部的空格 |
TRIM(s1 FROM s) |
去除首尾的s1 |
TRIM(LEADING s1 FROM s) |
去除头部的s1 |
TRIM(TRAILING s1 FROM s) |
去除尾部的s1 |
REPEAT(s, n) |
将s重复n遍 |
SPACE(n) |
返回n个空格 |
STRCMP(s1,s2) |
比较两个字符串的大小(ASCII),前面大返回1,后面大返回-1,相等返回0 |
SUBSTR(s,index, len) |
从index索引位置开始,截取len长度字符 |
LOCATE(substr, s) |
substr首次在s中出现的索引位置,没找到返回0 |
ELT(m, s1,s2...sn) |
从s1,s2...sn中取出第m个的那个字符串 |
FIELD(s,s1,s2...sn) |
获取s在s1,s2...sn中首次出现的索引位置 |
FIND_IN_SET(s1,s2) |
获取s1在s2列表中出现的索引位置,其中s2是以逗号分隔的字符串 |
REVERSE(s) |
反转字符串s |
NULLIF(s1, s2) |
s1和s2相等返回NULL ,不相等返回s1 |
日期和时间函数
-
获取日期、时间
函数 用法 CURDATE()
CURRENT_DATE()
获取当前日期,返回年月日 CURTIME()
CURRENT_TIME()
获取当前时间,返回时分秒 NOW()
SYSDATE()
CURRENT_TIMESTAMP()
LOCALTIME()
LOCALTIMESTAMP()
获取当前日期时间,返回年月日时分秒 UTC_DATE()
获取世界标准时间,返回年月日 UTC_TIME()
获取世界标准时间,返回时分秒 -
日期与时间戳的转换
函数 用法 UNIX_TIMESTAMP()
将当前时间转为时间戳 UNIX_TIMESTAMP(date)
将指定日期转为时间戳 FROM_UNIXTIME(timestamp)
将时间戳转为普通格式的时间 -
获取月份、星期、星期数、天数等函数
函数 用法 YEAR(date)
MONTH(date)
DAY(date)
分别获取日期中的年月日 HOUR(date)
MINUTE(date)
SECOND(date)
分别获取日期中的时分秒 MONTHNAME(date)
根据指定日期,返回月份的英文名称 DAYNAME(date)
根据指定日期,返回星期数, Friday WEEKDAY(date)
根据指定日期,返回星期数,周一是0,周二是1... QUARTER(date)
根据指定日期,返回季度 WEEK(date)
WEEKOFYEAR(date)
根据指定日期,返回一年中的第几周 DAYOFYEAR(date)
根据指定日期,返回一年中的第几天 DAYOFMONTH(date)
根据指定日期,返回一个月中的第几天 DAYOFWEEK(date)
根据指定日期,返回一周中的第几天 -
日期操作
函数 用法 EXTRACT(type FROM date)
返回指定日期中type类型的数据 -
时间和秒的转换
函数 用法 TIME_TO_SEC(time)
将时间(时分秒)转换为秒 SEC_TO_TIME(sec)
将秒转换为时间(时分秒) -
计算日期和时间
函数 用法 DATE_ADD(date, interval type)
ADDDATE(date, interval, type)
返回与date相差interval时间段的日期时间 DATE_SUB(date, interval, type)
SUBDATE(date, interval, type)
返回与date相差interval时间段的日期时间 ADDTIME(time1, time2)
在time1基础上加上time2,当time2是一个数字时,看成是秒,可以为负数 SUBTIME(time1, time2)
在time1基础上减去time2,当time2是一个数字时,看成是秒,可以为负数 DATEDIFF(date1, date2)
返回date1和date2相差的天数 TIMEDIFF(time1,time2)
返回time1和time2相差的时间 FROM_DAYS(N)
返回从000年1月1日起,n天之后的日期 TO_DAYS(N)
返回date距离0000年1月1日的天数 LAST_DAY(date)
返回date所在月份的最后一天日期 MAKEDATE(year,n)
根据给定年份和当前所在的天数,组合成一个日期 MAKETIME(hour. minute, second)
将给定的时、分、秒组合成时间 PERIOD_ADD(time, n)
返回time加上n之后的时间 -
日期的格式化与解析
函数 用法 DATE_FORMAT(date, fmt)
将date按照fmt格式化 TIME_FORMAT(time, fmt)
将time按照fmt格式化 STR_TO_DATE(str, fmt)
将字符串按照格式化转为日期 GET_FORMAT(date_type, fmt_type)
根据type获取格式化字符串
流程控制函数
函数 | 用法 |
---|---|
IF(value1,value2,value3) |
三目运算,value1为真返回value2,否则返回value3 |
IFNULL(value1,value2) |
value1不为NULL ,返回value1,否则返回value2 |
CASE WHEN...THEN...WHEN...THEN...ELSE...END |
类似于if...else |
CASE expr WHEN...THEN...WHEN...THEN...ELSE...END |
类似于switch...case |
加密函数
函数 | 用法 |
---|---|
MD5(str) |
MD5加密,不可逆 |
SHA(str) |
比MD5更安全,不可逆 |
MySQL信息函数
函数 | 用法 |
---|---|
VERSION() |
MySQL版本号 |
CONNECTION_ID() |
MySQL服务器的连接数 |
DATABASE() SCHEMA() |
当前所在命令行的数据库 |
USER() CURRENT_USER() SYSTEM_USER() SESSION_USER() |
当前连接MySQL的用户名 |
CHARSET(str) |
返回str的字符集 |
COLLATION(str) |
返回str的比较规则 |
其他函数
函数 | 用法 |
---|---|
FORMAT(num, n) |
num四舍五入之后保留n位小数,n<=0,则保留整数部分 |
CONV(value, from, to) |
将value从from进制转换为to进制 |
INET_ATON(ipValue) |
将以点分割的ip地址转为数字形式 |
INET_NTOA(value) |
将数字形式的ip地址转为以点分割的ip地址 |
BENCHMARK(n, expr) |
计算表达式expr执行n次的时间 |
CONVERT(value USING char_code) |
将value的字符编码修改为char_code |
聚合函数
接收多个参数并返回一个结果
函数之间可以嵌套
常用的聚合函数
函数 | 用法 |
---|---|
AVG() |
平均数 |
SUM() |
总和 |
MAX() |
最大值 |
MIN() |
最小值 |
COUNT() |
计算指定字段在查询结果中出现的次数,不包含NULL |