MySQL提供了很多功能强大、方便易用的函数,在进行数据库管 理以及数据的查询和操作时,帮助我们提高对数据库的管理效率。此本即总结了MySql中非常方便常用的函数
目录
- MySql函数
- 1. 数学函数
- 2.字符串函数
- 3.日期和时间函数
- 4.流程控制函数
- CASE
- IF(expr1,expr2,expr3)
- IFNULL(expr1,expr2)|NULLIF(expr1,expr2)
- 5.其他函数
MySql函数
MySql中函数分为两类
基本函数语法:
函数名(参数列表)
1. 数学函数
- ABS(x):返回x的绝对值;
- SQRT(x):返回非负数x的平方根;
- PI():返回圆周率;
- MOD(x,y)或%:返回x被y除的余数; 即x%y;
- CEIL(x)、CEILING(x):返回大于或者等于x的最小整数值;
CEIL(3) 返回3
CEIL(3.3) 返回4
应用场景:
不足1按1计算的场景 - FLOOR(x):返回小于或者等于x的最大整数值;
- ROUND(x,y):返回保留小数点后面y位,四舍五入的整数;
- TRUNCATE(x,y):返回被舍弃的小数点后y位的数字x;后面的截断丢弃,不进行四舍五入
- RAND():每次产生不同的随机数;
RAND(x):返回一个范围在0~1之间的随机浮点数,x为随机种子 - SIGN(x):返回参数的符号;
- POW(x,y)和POWER(x,y): 返回x的y次乘方的结果值;
- EXP(x):返回以e为底的x乘方后的值;
- LOG(x):返回x的自然对数,x相对于基数e的对数;
- LOG10(x):返回x的基数为10的对数;
- RADIANS(x):将参数x由角度转化为弧度;
- DEGREES(x):将参数x由弧度转化为度。
- SIN(x):返回x正弦,其中x为弧度值;
- ASIN(x)返回x的反正弦,即正弦为x的值;
- COS(x):返回x的余弦;
- ACOS(x):返回x反余弦
- TAN(x):返回x的正切;
- ATAN(x)返回x的反正切;
2.字符串函数
• CHAR_LENGTH(str):返回字符串str的所包含字符个数;
• LENGTH(str):返回字符串str的字节长度;
• CONCAT(s1,s2,…): 字符串连接;
• CONCAT_WS(x,s1,s2,…):字符串连接, x是其它参数的分隔符;
• INSERT(s1,x,len,s2) :返回字符串s1,s1中插入字符串s2;
在位置x起始的子串(下标从1开始)且len个字符长的子串由字符串 s2代替。如果子串超过s1字符串长度,返回原串;若有参数为null,则返回null。
• LOWER (str)|LCASE (str):将字符串全部转换成小写字母;
• UPPER(str)|UCASE(str):将字符串全部转换成大写字母;
• LEFT(s,n):返回最左边指定长度的字符;
• RIGHT(s,n):返回最右边指定长度的字符;
• LPAD(s1,len,s2)| RPAD(s1,len,s2) :填充字符串函数;
• TRIM(s1 FROM s)|LTRIM(s)|RTRIM(s):删除空格函数;
• REPEAT(s,n):重复生成字符串函数;
• SPACE(n):返回一个由n个空格组成的字符串;
• REPLACE(s,s1,s2):字符串替换函数;
• STRCMP(s1,s2):比较字符串大小函数;
• SUBSTRING(s,n,len):获取子串函数;
• LOCATE(str1,str)|POSITION(str1 IN str)|INSTR(str, str1): 匹配子串开始位置函数;
• REVERSE(s):将字符串s反转;
• ELT(N,字符串1,字符串2,字符串3,…):返回指定位置函数;
3.日期和时间函数
• CURDATE()和CURRENT_DATE() :获取当前日期函数;
• NOW():返回服务器的当前日期和时间;
• CURTIME():返回当前时间,只包含时分秒;
• UTC_DATE():返回世界标准时间日期函数;
• UTC_TIME():返回世界标准时间函数;
• TIMEDIFF(expr1, expr2):返回两个日期相减相差的时间数;
• DATEDIFF(expr1, expr2):返回两个日期相减相差的天数;
• DATE_ADD(date,INTERVAL expr type):日期加上一个时间间隔值;
• DATE_SUB(date,INTERVAL expr type):日期减去一个时间间隔值;
• DATE(date)、TIME(date)、YEAR(date):选取日期时间的各个部分:
• EXTRACT(unit FROM date):从日期中抽取出某个单独的部分或组合;
• DAYOFWEEK(date) 、DAYOFMONTH(date) 、DAYOFYEAR(date):返回日期在 一周、一月、一年中是第几天
• DAYNAME、MONTHNAME:返回日期的星期和月份名称;
• DATE_FORMAT(date,format):格式化日期;
• TIME_FORMATE(time,formate):格式化时间;
4.流程控制函数
常见的控制流程函数如下:
CASE
- 基本语法结构
CASE value WHEN 表达式 THEN 结果
ELSE 结果
END - 有两种写法:
- CASE value WHEN [compare-value] THEN result [WHEN [compare-value] THEN result …] [ELSE result] END
- CASE WHEN [condition] THEN result [WHEN [condition] THEN result …] [ELSE result] END
- • 在第一个方案的返回结果中, value=compare-value(即当value和compare-value相等时,放回result)。
• 而第二个方案的返回结果是第一种情况的真实结果。如果没有匹配的结果值,则返回结果为ELSE后的结果,如果没有ELSE 部分,则返回值为 NULL。
IF(expr1,expr2,expr3)
- 用法:如果 expr1 是TRUE (expr1 <> 0 and expr1 <> NULL), 则 IF()的返回值为expr2; 否则返回值则为 expr3。
- IF() 的返回值为数字值或字符串值,具体情况视其所在语 境而定。
- 举例:
IFNULL(expr1,expr2)|NULLIF(expr1,expr2)
- 假如expr1 不为NULL ,则IFNULL() 的返回值为expr1 ;
否则其返
回值为expr2 。 - IFNULL() 的返回值是数字或是字符串,具体情况取决于其所使用的语境
- 举例:
5.其他函数
• Database():返回使用utf8 字符集的默认( 当前) 数据库名
• Version():返回指示MySQL 服务器版本的字符串。
• User():返回当前MySQL 用户名和机主名
• Inet_aton():给出一个作为字符串的网络地址的点地址表示, 返回一个代表该地址数值的整数。
• Inet_ntoa():给定一个数字网络地址, 返回作为字符串的该 地址的点地址表示。
• Password(str):从原文密码str 计算并返回密码字符串,当 参数为NULL 时返回NULL。 • Md5(str):为字符串算出一个MD5 128 比特检查和。