知识点十: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,…) |
返回指定位置的字符串 |
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的值。 |
SELECT id,username,score,IF(score>60,'及格','不及格') FROM student;
SELECT id,username,age,IFNULL(age,'') FROM cms_user; SELECT id,username,score, CASE WHEN score>60 THEN '不错' WHEN score=60 THEN '刚及格' ELSE '没及格' END FROM student; 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代表使用) |