SQL常用函数是数据库查询和数据处理过程中经常用到的工具,能够帮助用户快速完成数据统计、格式转换、条件判断等操作,减少复杂逻辑的实现成本。不同类型的函数对应不同的处理场景,掌握它们的用法可以大幅提升SQL语句的编写效率。

SQL常用函数分类
SQL中的常用函数可以按照功能分为多个类别,最常见的包括聚合函数、字符串函数、日期时间函数、数值函数和流程控制函数,不同类别的函数适用场景差异较大。
1. 聚合函数
聚合函数主要用于对一组数据进行统计计算,通常和GROUP BY子句配合使用,常见的聚合函数有COUNT、SUM、AVG、MAX、MIN。
以下是聚合函数的使用示例,假设存在一张用户订单表order_info,包含字段order_id、user_id、order_amount、order_date:
-- 统计订单总数量 SELECT COUNT(order_id) AS total_order_num FROM order_info; -- 统计所有订单的总金额 SELECT SUM(order_amount) AS total_amount FROM order_info; -- 统计订单平均金额 SELECT AVG(order_amount) AS avg_amount FROM order_info; -- 查询最大订单金额和最小订单金额 SELECT MAX(order_amount) AS max_amount, MIN(order_amount) AS min_amount FROM order_info; -- 按用户分组统计每个用户的订单数量 SELECT user_id, COUNT(order_id) AS user_order_num FROM order_info GROUP BY user_id;
2. 字符串函数
字符串函数用于处理文本类型的数据,常见的包括CONCAT、LENGTH、UPPER、LOWER、SUBSTRING、TRIM等。
以下是字符串函数的使用示例:
-- 拼接两个字符串
SELECT CONCAT('Hello', ' ', 'World') AS result; -- 返回 Hello World
-- 获取字符串长度
SELECT LENGTH('SQL函数') AS str_length; -- 返回 8(UTF8编码下一个中文占3字节,这里根据实际编码可能有差异)
-- 字符串转大写
SELECT UPPER('sql') AS upper_str; -- 返回 SQL
-- 字符串转小写
SELECT LOWER('SQL') AS lower_str; -- 返回 sql
-- 截取字符串,从位置1开始截取3个字符
SELECT SUBSTRING('ABCDEFG', 1, 3) AS sub_str; -- 返回 ABC
-- 去除字符串两端的空格
SELECT TRIM(' test ') AS trim_str; -- 返回 test
3. 日期时间函数
日期时间函数用于处理日期和时间类型的数据,常见的包括NOW、CURDATE、CURTIME、DATE_FORMAT、DATEDIFF等。
以下是日期时间函数的使用示例:
-- 获取当前日期和时间
SELECT NOW() AS current_datetime;
-- 获取当前日期
SELECT CURDATE() AS current_date;
-- 获取当前时间
SELECT CURTIME() AS current_time;
-- 格式化日期,将日期转为YYYY-MM-DD格式
SELECT DATE_FORMAT(NOW(), '%Y-%m-%d') AS format_date;
-- 计算两个日期的天数差
SELECT DATEDIFF('2024-05-20', '2024-05-10') AS day_diff; -- 返回 10
4. 数值函数
数值函数用于处理数值类型的数据,常见的包括ROUND、CEIL、FLOOR、MOD等。
以下是数值函数的使用示例:
-- 四舍五入,保留2位小数 SELECT ROUND(3.1415, 2) AS round_result; -- 返回 3.14 -- 向上取整 SELECT CEIL(3.2) AS ceil_result; -- 返回 4 -- 向下取整 SELECT FLOOR(3.8) AS floor_result; -- 返回 3 -- 取余数 SELECT MOD(10, 3) AS mod_result; -- 返回 1
5. 流程控制函数
流程控制函数用于实现条件判断逻辑,常见的包括IF、CASE WHEN。
以下是流程控制函数的使用示例:
-- IF函数,条件成立返回第一个值,否则返回第二个值
SELECT IF(10 > 5, '大于', '小于等于') AS if_result; -- 返回 大于
-- CASE WHEN实现多条件判断
SELECT
order_amount,
CASE
WHEN order_amount > 100 THEN '大额订单'
WHEN order_amount > 50 THEN '中额订单'
ELSE '小额订单'
END AS order_level
FROM order_info;
SQL函数使用注意事项
- 不同数据库(如MySQL、Oracle、SQL Server)的函数语法可能存在差异,使用时要参考对应数据库的官方文档。
- 聚合函数会忽略NULL值,如果需要统计包含NULL的行数,可以使用
COUNT(*)。 - 函数嵌套使用时要注意执行顺序,内层函数的结果会作为外层函数的参数。
- 在WHERE子句中尽量不要对字段使用函数,否则可能导致索引失效,影响查询性能。