1. 字符串函数(String Functions)
这类函数专门处理文本数据,在数据清洗和格式化输出时非常有用。
| 函数 | 语法 | 说明 | 示例 |
|---|---|---|---|
CONCAT | CONCAT(str1, str2, ...) | 连接多个字符串 | CONCAT('Hello', ' ', 'World') → 'Hello World' |
CONCAT_WS | CONCAT_WS(sep, str1, ...) | 用指定的分隔符连接字符串,会跳过NULL值 | CONCAT_WS('-', '2024', NULL, '15') → '2024-15' |
SUBSTRING | SUBSTRING(str, pos, len) | 从指定位置pos开始,截取len个字符 | SUBSTRING('Hello World', 1, 5) → 'Hello' |
LEFT / RIGHT | LEFT(str, len) / RIGHT(str, len) | 从左侧或右侧截取指定长度的字符 | LEFT('Hello World', 5) → 'Hello' |
LENGTH | LENGTH(str) | 返回字符串的字节长度(UTF-8中一个汉字占3字节) | LENGTH('你好') → 6 |
CHAR_LENGTH | CHAR_LENGTH(str) | 返回字符串的字符数量(一个汉字算1个字符) | CHAR_LENGTH('你好') → 2 |
UPPER / LOWER | UPPER(str) / LOWER(str) | 将字符串转换为大写或小写 | UPPER('Hello') → 'HELLO' |
TRIM | TRIM(str) | 去除字符串两端的空格 | TRIM(' Hello ') → 'Hello' |
REPLACE | REPLACE(str, old, new) | 将字符串中的指定子串替换为另一个子串 | REPLACE('Hello World', 'World', 'MySQL') → 'Hello MySQL' |
INSTR | INSTR(str, substr) | 返回子串substr在字符串str中首次出现的位置 | INSTR('Hello World', 'World') → 7 |
REVERSE | REVERSE(str) | 反转字符串中的字符顺序 | REVERSE('Hello') → 'olleH' |
INSERT | INSERT(str, pos, len, newstr) | 在指定位置pos开始,替换len个字符为newstr | INSERT('Hello', 1, 2, 'AA') → 'AAllo' |
2. 日期和时间函数(Date and Time Functions)
这类函数用于处理日期、时间数据,是生成报表和进行时间序列分析的。
| 函数 | 语法 | 说明 | 示例 |
|---|---|---|---|
NOW / CURDATE / CURTIME | NOW() / CURDATE() / CURTIME() | 返回当前日期时间、当前日期或当前时间 | NOW() → '2024-01-15 14:30:00' |
YEAR / MONTH / DAY | YEAR(date) / MONTH(date) / DAY(date) | 从日期中提取年、月、日 | YEAR('2024-01-15') → 2024 |
HOUR / MINUTE / SECOND | HOUR(time) / MINUTE(time) / SECOND(time) | 从时间中提取小时、分钟、秒 | HOUR('14:30:00') → 14 |
DATE_FORMAT | DATE_FORMAT(date, format) | 按照指定格式格式化日期 | DATE_FORMAT(NOW(), '%Y年%m月%d日') → '2024年01月15日' |
STR_TO_DATE | STR_TO_DATE(str, format) | 将字符串按照指定格式转换为日期类型 | STR_TO_DATE('15-01-2024', '%d-%m-%Y') → '2024-01-15' |
DATEDIFF | DATEDIFF(date1, date2) | 计算两个日期之间的天数差 | DATEDIFF('2024-01-15', '2024-01-01') → 14 |
DATE_ADD / DATE_SUB | DATE_ADD(date, INTERVAL expr unit) | 对日期进行加/减运算 | DATE_ADD('2024-01-01', INTERVAL 30 DAY) → '2024-01-31' |
TIMESTAMPDIFF | TIMESTAMPDIFF(unit, date1, date2) | 计算两个日期时间的差值,单位可指定 | TIMESTAMPDIFF(DAY, '2024-01-01', '2024-01-15') → 14 |
3. 数值函数(Numeric Functions)
用于执行数学计算和数值处理。
| 函数 | 语法 | 说明 | 示例 |
|---|---|---|---|
ROUND | ROUND(num, dec) | 对数字进行四舍五入,保留指定小数位 | ROUND(3.14159, 2) → 3.14 |
TRUNCATE | TRUNCATE(num, dec) | 截断数字到指定小数位(不四舍五入) | TRUNCATE(3.14159, 2) → 3.14 |
ABS | ABS(num) | 返回数字的绝对值 | ABS(-5) → 5 |
CEILING / FLOOR | CEILING(num) / FLOOR(num) | 返回大于等于或小于等于该数字的最小/最大整数 | CEILING(3.14) → 4, FLOOR(3.14) → 3 |
4. 聚合函数(Aggregate Functions)
这类函数对一组值进行统计计算,常与 GROUP BY 配合使用。
| 函数 | 语法 | 说明 | 示例 |
|---|---|---|---|
COUNT | COUNT(*) / COUNT(column) | 计算表中的行数或某列非空值的个数 | COUNT(*) → 100 |
SUM | SUM(column) | 计算某列的总和 | SUM(amount) → 5000 |
AVG | AVG(column) | 计算某列的平均值 | AVG(age) → 25.5 |
MAX / MIN | MAX(column) / MIN(column) | 返回某列的最大值或最小值 | MAX(price) → 99.99 |
5. 条件与逻辑函数(Conditional Functions)
用于在SQL中实现if-else逻辑,进行数据转换。
| 函数 | 语法 | 说明 | 示例 |
|---|---|---|---|
IF | IF(condition, true_val, false_val) | 简单if-else判断,满足条件返回一个值,否则返回另一个 | IF(age>=18, '成年', '未成年') |
CASE | CASE WHEN condition1 THEN result1 WHEN condition2 THEN result2 ELSE default END | 多重条件判断(类似switch),用于复杂逻辑 | CASE WHEN age<18 THEN '少年' WHEN age<30 THEN '青年' ELSE '中年' END |
IFNULL / COALESCE | IFNULL(expr1, expr2) / COALESCE(expr1, expr2, ...) | 处理NULL值,返回第一个非NULL的值 | IFNULL(phone, '无电话') |

180

被折叠的 条评论
为什么被折叠?



