MySQL函数是MySQL数据库提供的内部函数。这些内部函数可以帮助用户更加方便的处理表中的数据。本文将简单的介绍MySQL中一些常见的函数,方便之后查阅。
总结了SQL语句中常见的五种函数,分别是:
字符函数:对字符串、二进制数据或表达式执行操作。
数学函数:对表中的数据进行算数运算。
日期函数:处理表中的日期和时间。
聚合函数:返回数据的总汇值。
流程控制函数:实现SQL的条件逻辑
字符函数
| 函数名 | 函数作用 |
|---|---|
| ASCII(char) | 返回字符的ASCII码 |
| BIT_LENGTH(str) | 返回字符串的比特长度 |
| CONCAT(s1,s2) | 拼接字符串 |
| CONCAT_WS(sep,s1,s2…,sn) | 将s1,s2…sn连接成字符串,使用sep进行间隔 |
| FORMAT(x,n) | 将数字x进行格式化“x,xxx.xx”保留n位小 |
| INSERT(str1,x,y,str2) | 将字符串str1从x位置开始,将y个字符长的字符串替换为str2 |
| INSTR(str1,str2) | 返回子串str2第一次在str1中出现的索引,如果找不到返回0 |
| LEFT(str,x) | 返回字符串str中最左边的x个字符 |
| LENGTH(str) | 获取参数值的字节个数 |
| LOCATE(str1,str2) | 在str2中查找str1第一次出现的索引 |
| LOWER(str)/LCASE(s) | 将其转换为小写 |
| LPAD(str1,num,str2) | 用指定的字符str2实现左填充指定长度,如果num小于str1的 字符长度,则从右边截断至num字符长度 |
| LTRIM(str) | 删除str前面的空格 |
| POSITION(str1 IN str2) | 在str2中查找str1第一次出现的索引 |
| REPEAT(str,n) | 将字符串str重复n次,如果n<=0,返回一个空字符串。如果str或者n是NULL,返回NULL |
| REPLACE(str1,str2,str3) | 将str1中的str2全部替换为str3 |
| REVERSE(str) | 颠倒字符串 |
| RIGHT(str,x) | 返回字符串str中最右边的x个字符 |
| RPAD(str1,num,str2) | 用指定的字符str2实现右填充指定长度,如果num小于str1的字符长度,则从左边截断至num字符长度 |
| STRCMP(s1,s2) | 比较字符串s1和s2,大于1,等于0,小于-1 |
| SUBSTR(str,num1,num2) | 截取从指定索引num1处num2字符长度的字符 |
| TRIM(str)/LTRIM(str)/RTRIM(str) | 删除str两边/左/右的空格,(str1,str2)删除所有的str1 |
| UPPER(str)/UCASE(str) | 将其转换为大写 |
回目录
数学函数
| 函数名 | 函数作用 |
|---|---|
| ABS(x) | 返回绝对值 |
| BIN(x) | 返回二进制(OCT返回八进制,HEX返回十六进制) |
| CEILING(X) | 返回大于等于x的最小整数值 |
| EXP(x) | 返回值e的x次方 |
| FLOOR(x) | 返回小于等于x的最大整数值 |
| GREATEST(x1,x2,…,xn) | 返回集合中的最大值 |
| LEAST(x1,x2,…,xn) | 返回集合中的最小值 |
| LN(x) | 返回x的自然对数 |
| LOG(x,y) | 返回x的以y为底的对数 |
| MOD(x,y) | 返回模(x-x/y*y) |
| ROUND(x) | 四舍五入 |
| SQRT(x) | 返回一个输的方平根 |
| TRUNCATE(x,y) | 返回数字x截短为y位小数的结果 |
| POWER(x,y) | 返回x的y次幂 |
| SIGN(x) | 返回x的符号,负数-1, |
回目录
日期函数
| 函数名 | 函数作用 |
|---|---|
| ADDDATE(date,n) /SUBDATE(date,n) | 从date开始加n天的日期 |
| ADDTIME(t,n) | 时间t加上n秒的时间 |
| CURTIME() | 获取当前的时间 |
| DATE_FORMAT(date,fmt) | 按照指定的fmt格式进行格式化日期 |
| DATEDIFF(d1,d2) | 计算指定日期d1与d2之间相隔的天数 |
| DAYNAME(date) | 返回date的星期名 |
| DAYOFMONTH(date) | 返回date是一月中的第几天 |
| DAYOFWEEK(date) | 返回date是一周中的第几天 |
| DAYOFYEAR(date) | 返回date是一年中的第几天 |
| FROM_UNIXTIME(时间戳) | 时间戳转日期 |
| GETDATE()/CURDATE() | 获取当前系统的日期 |
| HOUR(date) | 返回time的小时值 |
| LAST_DAY(date) | 返回指定月份的最后一天 |
| MINUTE(date) | 返回time的分钟值 |
| MONTH(date) | 返回date中的月份值 |
| MONTHNAME(date) | 返回date的月份名 |
| NOW() | 返回当前的日期和时间 |
| QUARTER(date) | 返回date在一年中的季度(1~4) |
| UNIX_TIMESTAMP(date) | 得到时间戳 |
| WEEK(date) | 返回date为一年中的第几周(0~53) |
| YEAR(date) | 返回date的年份(1000~9999) |
回目录
聚合函数
| 函数名 | 函数作用 |
|---|---|
| AVG(col) | 返回指定列的平均值 |
| COUNT(*) | 返回表中的所有行数 |
| COUNT(col) | 返回指定列中非NULL值的个数 |
| GROUP_CONCAT(col) | 返回由属于一组的列值链接组合而成的结果(详解) |
| MAX(col) | 返回指定列的最大值 |
| MIN(col) | 返回指定列的最小值 |
| SUM(col) | 返回指定列的所有值之和 |
回目录
流程控制函数
| 函数名 | 函数作用 |
|---|---|
| CASE WHEN[test1] THEN [result1]…ELSE[default] | 如果testN为真,则返回resultN,否则返回default |
| CASE [test] WHEN[val1] THEN[result]…ELSE[default]END | 如果test和valN相等,则返回resultN,否则返回default |
| IF(test,t,f) | 如果test是真,返回t,否则返回f |
| IFNULL(arg1,arg2) | 如果arg1不是空,返回agr1,否则返回arg2 |
| NULLIF(arg1,arg2) | 如果arg1=arg2,返回NULL,否则返回arg1 |
回目录
上面的一些总结只是目前了解到的,作为一个学习笔记,还有很多没有总结,会持续更新。欢迎各位批评指正!