知识点十:MySQL中的函数(45-50)
数学函数:
名称 | 描述 |
CEIL() | 进一取整 |
FLOOR() | 舍一取整 |
MOD | 取余数(取摸) |
POWER() | 幂运算 |
ROUND() | 四舍五入 |
TRUNCATE() | 数字截取 |
ABS() | 取绝对值 |
PI() | 圆周率 |
RAND() 和RAND(X) | 返回0~1之间随机数,RAND(X)X相同时返回的随机数相同 |
SIGN(X) | 返回X的符号,X为负数·0·正数分别返回-1·0·1 |
EXP(X) | 计算e的X次方 |
字符串函数:
函数名称 | 描述 |
CHAR_LENGTH(S) | 返回字符串的字符数 |
LENGTH | 返回字符串的长度 |
CONCAT(S1,S2,…) | 将字符串合并为一个字符串 |
CONCAT_WS(X,S1,S2,…) | 以指定分割符连接字符串 |
UPPER(S)/UCASE(S) | 将字符串转换为大写 |
LOWER(S)/LCASE(S) | 将字符串转换为小写 |
LEFT(S,N)/RIGHT(S,N) | 返回字符串的前/后n个字符 |
LPAD(S1,LEN,S2)/RPAD(S1,LEN,S2) | 将字符串S1用S2填充到指定的LEN |
LTRIM(S)/RTRIM(S)/TRIM(S) | 去掉字符串中的空格 |
TRIM(S1 FROM S2) | 去掉字符串s中开始处和结尾处的字符S1 |
REPEAT(S,N) | 重复字符串指定次数 |
SPACE(N) | 返回N个空格 |
REPLACE(S,S1,S2) | 将字符串S中搜索S1,替换成S2 |
STRCMP(S1,S2) | 比较字符串,>=<分别返回1,0,-1 |
SUBSTRING(S,N,LEN) | 截取字符串 |
REVERSE(S) | 反转字符串 |
ELT(N,S1,S2,…) | 返回指定位置的字符串 |
1 SELECT CONCAT('_',TRIM(' ABC '),'_'),CONCAT('_',LTRIM(' ABC '),'_'),CONCAT('_',RTRIM(' ABC '),'_');
字符串函数测试
日期时间函数:
名称 | 名称 |
CURDATE(),CURRENT_DATE() | 返回当前日期 |
CURTIME(),CURRENT_TIME() | 返回当前时间 |
NOW() | 返回当前的时间日期 |
MONTH(D) | 返回日期中的月份值 |
MONTHNAME(D) | 返回日期中月份名称,返回January |
DAYNAME(D) | 返回日期是几,Monday |
DAYOFWEEK(D) | 返回一周内的第几天,1代表星期日 |
WEEKDAY(D) | 返回日期是星期几,0代表星期一 |
WEEK(D) | 一年中的第几个星期 |
名称 | 名称 |
YEAR(D) | 返回年份值 |
HOUR(T) | 返回小时值 |
MINUTE(T) | 返回分钟值 |
SECOND(T) | 返回秒数值 |
DATEDIFF(D1,D2) | 计算两个日期之间相隔的天数 |
条件判断函数:
名称 | 名称 |
IF(EXPR,V1,V2) | 如果表达式EXPR成立,返回结果V1;否则V2 |
IFNULL(V1,V2) | 如果V1的不能为空,就显示V1的值,否则V2 |
CASE WHEN exp1 THEN v1 [WHEN exp2 THEN v2] [ELSE vn] END | CASE表示函数开始,END表示函数结束。如果表达式exp1成立时,返回v1,如果表达式exp2成立时,返回v2的值。以此内推,最后遇到ELSE时,返回vn的值。 |
1 SELECT id,username,score,IF(score>60,'及格','不及格') FROM student;
2 SELECT id,username,age,IFNULL(age,'100') FROM cms_user;
3
4 SELECT id,username,score, CASE WHEN score>60 THEN '不错' WHEN score=60 THEN '刚及格' ELSE '没及格' END FROM student;
5
6 INSERT student(username,score) VALUES('AAAA',12);
条件判断函数测试
系统函数:
名称 | 名称 |
VERSION() | 返回数据库的版本号 |
CONNECTION_ID() | 返回服务器的连接数 |
DATABASE(),SCHEMA() | 返回当前数据库名称 |
USER(),SYSTEM_USER() | 返回当前用户 |
CURRENT_USER(),CURRENT_USER | 返回当前用户 |
CHARSET(STR) | 返回字符串STR的字符集 |
COLLATION(STR) | 返回字符串STR的校验字符集 |
LAST_INSERT_ID() | 返回最近生成的AUTO_INCREMENT值 |
加密函数:
名称 | 名称 |
MD5(str) | 信息摘要加密 |
PASSWORD(str) | 加密算法 |
ENCODE(str,pwd,str) | 加密结果是一二进制数,必须使用BLOB类型字段保存 |
DECODE(crypt_str,pwd_str) | 对通过ENCODE加密之后的内容解密 |
其他常用的函数:
名称 | 描述 |
FORMAT(x,n) | 将数字x进行格式化,将x保留到小数点后n位 |
ASCII(s) | 返回字符串s的第一个字符的ASCII码 |
BIN(x) | 返回x的二进制编码 |
HEX(x) | 返回x的十六进制编码 |
OCT(x) | 返回x的八进制编码 |
CONV(x,f1,f2) | 将x从f1进制数变成f2进制数 |
INET_ATON(ip) | 将ip地址转换成数字 |
INET_NTOA(n) | 将数字转换成ip地址 |
GET_LOCT(name,time) | 定义锁 |
RELEASE_LOCK(name) | 解锁 |
IS_FREE_LOCK(name) | 查看锁的状态(0代表使用) |