SQL 有很多可用于计数和计算的内建函数。常用的函数有聚合函数、日期和时间函数、转换函数、窗口函数、字符串函数等。
聚合函数
| 名称 | 功能 | 备注 |
|---|---|---|
| AVG | 平均值 | |
| COUNT | 非空值的个数 | |
| FIRST | 第一个记录的值 | |
| LAST | 最后一个记录的值 | |
| MAX() | 最大值 | |
| MIN | 最小值 | |
| SUM | 总和 |
日期函数
| 名称 | 功能 | 备注 |
|---|---|---|
| CURDATE | 当前日期 | |
| CURTIME | 当前时间 | |
| NOW | 当前日期和时间 | |
| UNIX_TIMESTAMP | 返回 UNIX 时间戳 | |
| DATE_ADD | 将两个日期相加 | |
| DATE_FORMAT | 按照指定格式格式化日期 | |
| DATE_SUB | 将两个日期相减 | |
| DATE | 从 date 或 datetime中提取出日期部分 | |
| DATEDIFF | 将两个日期相减 | |
| DAY | 某天是当月的第几天 (1-31) | |
| DAYNAME | 在用星期中的名称 | |
| DAYOFWEEK | 某天是该星期的第几天 | |
| DAYOFYEAR | 某天是一年中的第几天(1-366) | |
| EXTRACT | 提取日期中的某一部分 | |
| FROM_DAYS | 将天数转换为日期 | |
| FROM_UNIXTIME | 将某个日期格式化为 UNIX 时间戳 | |
| LAST_DAY | 日期所在月份的最后一天 | |
| YEAR | 日期参数中的年份 | |
| WEEK | 参数的星期数 | |
| WEEKDAY | 日期参数时一个星期中的第几天 | |
| MONTH | 日期参数的月份 | |
| HOUR | 提取小时 | |
| MINUTE | 分钟 | |
| SECOND | 参数中的秒数 (0-59) | |
| QUARTER | 日期参数所在的季度 | |
| STR_TO_DATE | 将字符串转换为日期数据 |
转换函数
| 名称 | 功能 | 备注 |
|---|---|---|
| CAST | 数据类型转换CAST (expression AS data_type) | 如CAST('12' AS int) |
窗口函数
| 名称 | 功能 |
|---|---|
| rank () over (partition by A order by B) | 计算排序时,如果存在相同位次的记录,则会跳过之后的位次 |
| dense_rank () over (partition by A order by B) | 计算排序,即使存在相同位次的记录,也不会跳过之后的位次 |
| row_number () over (partition by A order by B) | 赋予唯一的连续位次 |
字符串函数
| 名称 | 功能 |
|---|---|
| CONCAT_WS | 连接separator分隔,concat_ws(separator, str1, str2, ...) |
| CONCAT | 连接字符串concat(str1, str2,...) |
| INSERT | 在指定位置插入一个子字符串,直到指定的字符数 |
| LEFT | 指定的最左边的字符数的字符串 |
| LOCATE | 第一次出现子字符串的位置 |
| LOWER | 以小写返回参数 |
| LPAD | 返回字符串参数,用指定的字符串向左填充 |
| LTRIM | 删除前导空格 |
| REPLACE | 替换指定字符串的出现 |
| RIGHT | 返回指定的最右边字符数 |
| RPAD | 追加字符串指定的次数 |
| RTRIM | 删除尾随空格 |
| SUBSTR | 返回指定的子字符串 |
| TRIM | 删除前导和尾随空格 |
| UPPER | 转换为大写 |
| BIT_LENGTH | 参数的长度(以位为单位) |
| CHAR_LENGTH | 参数中的字符数 |
| LENGTH | 字符串的长度(以字节为单位) |