MySQL中的函数包括数学函数,字符串函数,日期和时间函数,条件判断函数,系统信息函数和加密函数。
1. 数学函数
函数 | 功能 |
---|---|
ABS(x) | 返回X的绝对值 |
PI() | 返回圆周率pi的值 |
SQRT(x) | 返回非负数x的二次方根 |
MOD(x,y) | 返回x被y除后的余数 |
CEIL(X),CERILING(x) | 返回不小于x的最小整数值 |
FLOOR(x) | 返回不大于x的最大整数值 |
RAND() | 随机返回0到1之间的浮点数 |
RAND(x) | x作为种子,相同x产生相同随机数 |
ROUND(x) | 返回最接近参数x的整数 |
ROUND(x,y) | 返回最接近x的数,其值保存到小数点后面y位 |
TRUNCATE(x,y) | 返回被舍去至小数点后y位的数字x,不四舍五入 |
SIGN(x) | 符号函数 |
POW(x,y),POWER(x,y) | 返回x的y次乘方结果值 |
EXP(x) | 返回e的x次乘方后的值 |
LOG(x),LOG10(x) | 返回x相对于基数e,10的对数 |
RADIANS(x) | 将参数x由角度转化位弧度 |
DEGREES(x) | 将参数x由弧度转化位角度 |
SIN(x),COS(x),TAN(x),COT(x) | 正弦,余弦,正切,余切 |
ASIN(x),ACOS(x),ATAN(x) | 反正弦,反余弦,反正切 |
2.字符串函数
字符串函数主要用来处理数据库中的字符串数据。
函数 | 功能 |
---|---|
CHAR_LENGTH(STR) | 返回str包含的字符个数,一个多字节字符算一个单字节 |
LENGTH(STR) | 返回字符串的字符长度 |
CONCAT(S1,S2,…); | 返回字符串S1,S2连接产生的字符串 |
CONCAT_WS(x,s1,s2,…); | 返回以x为分隔符连接的s1,s2… |
INSERT(s1,x,len,s2); | 返回s1子字符串起始于x被s2取代的len字符 |
LOWER(S),LCASE(S); | 返回s小写值 |
UPPER(s),UCASE(s); | 返回s大写值 |
LEFT(s,n),RIGHT(s,n) | 返回s最左边或最右边的n个字符 |
LPAD(s1,len,s2),RPAD(s1,len,s2) | 返回s1其左/右用s2填充到len长度 |
LTRIM(S),RTRIM(S),TRIM(S) | 去除掉s左边,右边,两边空格 |
TRIM(s1 FROM s) | 删除s中的两端所有s1字符串 |
REPEAT(s,n) | 返回一个s重复n次组成的字符串 |
SPACE(n) | 返回一个n个空格组成的字符串 |
REPLACE(s,s1,s2); | 使用字符串s2替代s中所有的字符串s1 |
STRCMP(s1,s2); | 相同返回0,小于返回-1,其他返回1 |
MID/SUBSTRING(s,n,len) | 从字符串s返回一个起始于n位,len长度子字符串 |
INSTR/LOCATE(s1,s),POSITION(s1 IN s) | 返回s1在s中的开始位置 |
REVERSE(s) | 反转s |
ELT(N,s1,s2,s3,…) | 返回字符串sN |
FIELD(s,s1,s2,…) | 返回s在列表(s1,s2,s3…)第一次出现的位置 |
FIND_IN_SET(s1,s2) | 返回s1在字符串列表s2中出现的位置 |
MAKE_SET(x,s1,s2…) | 返回由x的二进制指定的相应位的字符串组成的字符串 |
3日期和时间函数
函数 | 功能 |
---|---|
CURDATE(),CURRENT_DATE() | 返回‘YYYY-MM-DD’日期,+0可返回数值 |
CURTIME(),CURRENT_TIME() | 返回’HH:MM:SS’时间,+0返回数值 |
CURRENT_TIMESTAMP(),LOCALTIME(),NOW(),SYSDATE() | 返回’YYYY-MM-SS HH:MM:SS’,+0返回数字值 |
UNIX_TIMESTAMP(date) | 返回‘1970-01-01 00:00:00’之后的秒数 |
FROM_UNIXTIME(date) | 把秒数转化为1970-01-01 00:00:00之后的时间 |
UTC_DATE() | 返回世界标准时间日期值 |
UTC_TIME() | 返回世界标准时间时间值 |
MONTH(date),MONTHNAME(date) | 返回date中的月份,月名 |
DAYNAME(),DAYOFWEEK(),WEEKDAY() | 分别返回d对应的英文名称,索引 |
WEEK(d,mode) | 根据mode计算d是一年中的第几周 |
WEEKOFYEAR(d) | 计算某天位于一年中的第几周 |
DAYOFYEAR(d),DAYOFMONTH(d) | d是一年/一个月的第几天 |
YEAR(date),QUARTER(date),MINUTE(time),SECOND(time) | 返回date对应的年份,季度,分钟,秒数 |
EXTRACT(type FROM date) | 从日期中提取出一部分(由type决定) |
TIME_TO_SEC(time),SEC_TO_TIME(seconds) | 将time/second转化为second/time |
ADDDATE/DATE_ADD(date, INTERVAL expr type) | 执行日期的加运算 |
SUBDATE/DATE_SUB(date, INTERVAL expr type) | 执行日期的减运算 |
DATEDIFF(date1,date2) | 计算date1减date2的差值 |
DATE_FORMAT(date,format) | 根据format显示date |
TIME_FORMAT(time,format) | 根据format安排time值的格式 |
GET_FORMAT(var_type,format_type) | 返回日期字符串的显示格式 |
4.条件判断函数
MySQL中进行条件判断的函数有IF,IFNULL,CASE。
IF(expr, v1, v2);
如果expr为true,则返回第一个值,否则是第二个
IFNULL(v1,v2);
如果v1不为NULL,返回v1;否则返回v2。
CASE
CASE expr WHEN v1 THEN r1 [WHEN v2 THEN r2] [ELSE rm] END
如果expr值等于某个vi,则返回对应的THEN后面的结果;如果函数值都不相同,则返回ELSE后面的rm。
CASE WHEN v1 THEN r1 [WHEN v2 THEN r2] [ELSE rm] END
如果某个Vi为true时,返回对应位置THEN后面的结果,如果都不为true,返回ELSE后的rm。
5.系统信息函数
函数 | 功能 |
---|---|
VERSION() | 返回MySQL服务器字符串 |
CONNECTION_ID() | 返回MySQL服务器当前连接的次数 |
SHOW PROCESSLIST(), SHOW FULL PROCESSLIST() | 返回当前运行的线程 |
DATABASE(),SCHEMA() | 返回使用utf8字符集的当前数据库名 |
USER(),CURRENT_USER(),SYSTEM_USER() | 返回用户名 |
CHARSET(s) | 返回字符串s使用的字符集 |
COLLATION(s) | 饭hi字符串s的字符排列方式 |
LAST_INSERT_ID() | 返回最后一个insert或update或auto_increment列设置的第一个发生的值 |
6.加密函数
加密函数主要用来对数据进行加密和界面处理。
函数 | 功能 |
---|---|
PASSWORD(s) | 从原明文密码s计算并返回加密后的密码字符串 |
MD5(s) | 为s算出MD5128bit校验和 |
ENCODE(s,pswd_s) | 用pswd_s作为密码对s加密 |
DECODE(crypt_s,pswd_s) | 用pswd_s作为密码对加密字符串crypt_s解密 |
7.其他函数
函数 | 功能 |
---|---|
FORMART(x,n) | 以四舍五入的方式保留小数点后n位 |
CONV(N,from_base,to_base) | 将数字N从from_base进制到to_base |
INET_ATON() | 返回代表网络点地址的整数 |
INET_NTOA() | 将数字网络地址转化为网络点地址 |
GET_LOCK(str,timeout) | 使用str给定的名字得到一个锁,持续时间为timeout |
RELEASE_LOCK(str) | 解开GET_LOCK()得到的锁 |
IS_FREE_LOCK(str) | 检查锁是否可以使用 |
IS_USED_LOCK(str) | 检查锁是否在被使用 |
BENCHMARK(count,expr) | 重复执行expr,count次 |
CONVERT(str USING charset) | 更改str的字符集 |
CAST(x, AS type),CONVERT(x,type) | 转换x的类型 |