04-MySQL内置函数
数学函数
函数名 | 作用 |
---|---|
ABS(x) | 取绝对值 |
pi() | 圆周率 |
SQRT(x) | 平方根函数 |
MOD(x,y) | 取余函数 |
CEIL(x) | 取整函数,返回不小于x的最小整数值(舍弃小数+1),返回BIGINT |
CEILING(x) | 取整函数,返回不小于x的最小整数值(舍弃小数+1),返回BIGINT |
FLOOR(x) | 返回不大于x的最大整数值(舍弃小数),返回BIGINT |
RAND(x) | 返回随机数,范围在0-1至今,x作为种子值 |
ROUND(x,y) | 返回最接近于参数x的整数,对x值进行四舍五入 |
SIGN(x) | 返回参数的符号,根据x的值返回,负(-1),零(0),正(1) |
POW(x,y) | 返回x的y次方的的结果值 |
POWER(x,y) | 返回x的y次乘方的结果值 |
EXP(x) | 返回e的x乘方后的值 |
LOG(x) | 返回x的自然对数 |
LOG10(x) | 返回以10为基数的对数 |
RANDIANS(x) | 将参数x由角度转化为弧度 |
DEGREES(x) | 将参数x由弧度转化为角度 |
SIN(x) | 正弦函数 |
ASIN(x) | 反正弦函数 |
COS(x) | 余弦函数 |
ACOS(x) | 反余弦函数 |
TAN(x) | 正切函数 |
ATAN(x) | 反正切函数 |
COT(x) | 余切函数 |
字符串函数
函数名 | 作用 |
---|---|
CHAR_LENGTH(str) | 返回字符串str所包含的字符个数,一个多字节字符串算作一个单字符。 |
LENGTH(str) | 返回字符串的字节长度,使用utf-8编码字符集时,一个汉字是3个字节,一个数字或字母算一个字节 |
CONCAT(s1,s2…) | 返回s1和s2的拼接结果,如果其中某个参数为null,其返回结果是null |
CONCAT_WS(x,s1,s2) | CONCAT with separator,第一个参数是其他参数的分隔符,如果分隔符为null,那么返回null |
INSERT(s1,x,len,s2) | 返回s1,其子字符串起始于x位置和被字符串s2取代的len字符,如果x超过了字符串长度,则返回值为原始字符串,加入len的长度大于其他字符串的长度,则从x位置开始替换,任意参数为NULL时,返回NULL |
LOWER(str)/LCASE(str) | 转化为小写 |
UPPER(str)/UCASE(str) | 转化为大写 |
LEFT(s,n) | 返回字符串s开始的最左边n个字符 |
RIGHT(s,n) | 返回字符串s结尾的最右边n个字符 |
LPAD(s1,len,s2) | 返回,s1,左边由字符串s2填充到len字符串长度 |
RPAD(s1,len,s2) | 返回s2,其邮编被字符串s2填充至len字符长度 |
LTRIM(s) | 删除空格,字符串左侧空格字符被删除 |
RTRIM(s) | 删除空格,字符串右侧空格字符被删除 |
TRIM(s) | 删除字符串两侧的字符TRIM |
TRIM(s1 FROM s) | 删除字符串s中两端所有的子字符串s1 |
REPEAT(s,n) | 返回一个由重复的字符串s组成的字符串,字符串的数为n,若n<=0 返回一个空字符串,若s或n为NULL,则返回NULL |
SPACE(n) | 返回一个由n个空格组成的字符串 |
REPLACE(s,s1,s2) | 使用字符串s2替代字符串s中的所有字符串s1 |
STRCMP(s1,s2) | 若s1和s2的所有字符串都相同,则返回0;若根据当前分类次序,第一个参数小于第二个,返回-1,其他情况返回1 |
SUBSTRING(s,n,len) | 从字符串s返回一个长度同len字符串相同的子字符串,起始于位置n。 |
MID(s,n,len) | 获取指定位置处的子字符串 |
LOCATE(str1,str) | 返回子字符串str1在字符串str中的开始位置 |
POSITION(str1 IN str) | 返回子字符串str1在字符串str中的开始位置 |
INSTR(str,str1) | 返回子字符串str1在字符串str中的开始位置 |
REVERSE(s) | 将字符串s反转,返回的字符串的顺序和s字符串顺序相反 |
ELT(N,str1,str2,….) | 若N=1 ,则返回值为str1,若n=2,返回为str2,由此类推。n位置上不存在,返回null |
FIELD(s,s1,s2……) | 返回字符串s在列表s1,s2…中第一次出现的位置,找不到就返回0,若s为null ,返回0 |
FIND_IN_SET(s1,s2) | 返回字符串s1在字符串列表s2中出现的位置,字符串列表是一个由多个”,”分开的字符串组成的列表,如果s1不在s2或s2为空字符串,返回0,如果任意一个参数为NULL,则返回值为NULL |
MAKE_SET(x,s1,s2,…) | 返回由x的二进制数指定的相应位的字符串组成的字符串,s1对应比特1,s2对应比特02 |
日期和时间函数
函数名 | 作用 |
---|---|
CURDATE()/CURRENT_DATE() | 返回当前日期”YYYY-MM-DD” |
CURDATE()+0 | 返回当前日期”YYYYMMDD” |
CURRENT_TIMESTAMP() | 获取当前系统日期和时间 |
LOCAKTIME() | 获取当前系统日期和时间 |
NOW() | 获取当前系统日期和时间 |
SYSDATE() | 获取当前系统日期和时间 |
UNIX_TIMESTAMP(date) | 把普通格式的时间转换为unix时间戳 |
FROM_UNIXTIME(date) | 把unix时间戳转换为普通格式的时间 |
UTC_DATE() | 返回UTC(世界标准时间)日期值 |
MONTH(date) | 返回date对应的月份 |
MINTHNAME(date) | 返回date对应的月份名称 |
DAYNAME(d) | 返回日期的英文名称,sunday |
DAYOFWEEK(d) | 返回索引,1为周日 |
WEEKDAY(d) | 返回工作日索引,0为周一 |
WEEK(d,mode) | 计算日期d是一年中的第几周 |
Mode | 一周的第一天 | 范围 | Week1为第一周 |
---|---|---|---|
0 | 周日 | 0~53 | 本年度中有一个有一个周日周日 |
1 | 周一 | 0~53 | 本年度中有3天以上 |
2 | 周日 | 1~53 | 本年度中有一个周日 |
3 | 周一 | 1~53 | 本年度中有3天以上 |
4 | 周日 | 0~53 | 本年度中有3天以上 |
5 | 周一 | 0~53 | 本年度中一个周一 |
6 | 周日 | 1~53 | 本年度中有3天以上 |
7 | 周一 | 1~53 | 本年度中有一个周一 |
条件判断函数
函数名 | 作用 |
---|---|
IF(expr,v1,v2) | expr =true (expr<>0 and expr<>NULL),返回v1,否则返回v2 |
IFNULL(v1,v2) | 假如v1不为null,则IFNULL()的返回值为v1,否则其返回值为v2 |
CASE expr WHEN v1 THEN r1 (WHEN v2 THEN r2)(ELSE rn) END | 如果expr值等于某个vn,则返回 对应位置than后面的结果,如果都不相等,返回else后面的rn |
系统信息函数
函数名 | 作用 |
---|---|
SELECT VERSION(); | 查看MySQL版本号 |
SELECTCONNECTION_ID(); | 查看当前用户的连接数 |
SHOW PROCESSLIST | 输出当前用户的链接信息 |
SELECT DATABASE(),SCHEMA(); | 返回使用utf8字符集的默认数据库名 |
SELECT USER() | 获取当前登录用户名称 |
CHARSET(str) | 返回字符串str自变量的字符集 |
LAST_INSERT_ID() | 自动返回最后一个INSERT或UPDATE为AUTO_INCREMENT列设置的第一个发生的值 |
加/解密函数PASSWORD(str)
函数名 | 作用 |
---|---|
SELECT PASSWORD(‘newpwd’) | 加密 |
SELECT MD5(‘mypwd’) | md5加密 |
ENCODE(str,pswd_str) | 使用pswd_str作为密码,加密str |
DECODE(crypt_str,pswd_str) | 使用pswd_str作为密码,解码str |