SQL 提供了很多不同类型的函数,用于在查询中处理和操作数据。SQL 函数通常可以分为以下几类:
- 聚合函数(Aggregate Functions)
- 字符串函数(String Functions)
- 数值函数(Numeric Functions)
- 日期和时间函数(Date and Time Functions)
- 条件函数(Conditional Functions)
- 转换函数(Conversion Functions)
- 窗口函数(Window Functions)
- 其他函数(如:JSON、NULL 等函数)
下面是一些常见 SQL 函数的详细用法:
1. 聚合函数(Aggregate Functions)
这些函数通常用于对结果集的多个行进行计算,返回一个单一的值。
-
COUNT()
:返回符合条件的行数
SELECT COUNT(*) FROM employees;
-
SUM()
:返回列中所有数值的总和
SELECT SUM(salary) FROM employees;
-
AVG()
:返回列的平均值
SELECT AVG(salary) FROM employees;
-
MAX()
:返回列中的最大值
SELECT MAX(salary) FROM employees;
-
MIN()
:返回列中的最小值
SELECT MIN(salary) FROM employees;
-
GROUP_CONCAT()
:将多行数据连接为一个字符串
SELECT GROUP_CONCAT(name) FROM employees;
2. 字符串函数(String Functions)
用于处理字符串数据的函数。
-
CONCAT()
:连接两个或多个字符串
SELECT CONCAT(first_name, ' ', last_name) FROM employees;
-
LENGTH()
:返回字符串的长度
SELECT LENGTH(name) FROM employees;
-
SUBSTRING()
:从字符串中提取子字符串
SELECT SUBSTRING(name, 1, 3) FROM employees;
-
UPPER()
:将字符串转换为大写
SELECT UPPER(name) FROM employees;
-
LOWER()
:将字符串转换为小写
SELECT LOWER(name) FROM employees;
-
TRIM()
:去除字符串两端的空白字符
SELECT TRIM(' ' FROM name) FROM employees;
-
REPLACE()
:替换字符串中的部分内容
SELECT REPLACE(name, 'John', 'Mike') FROM employees;
3. 数值函数(Numeric Functions)
用于处理数值数据的函数。
-
ABS()
:返回数字的绝对值
SELECT ABS(-10);
-
ROUND()
:四舍五入数字
SELECT ROUND(123.456, 2); -- 结果: 123.46
-
FLOOR()
:返回小于等于指定数字的最大整数
SELECT FLOOR(123.456);
-
CEIL()
或CEILING()
:返回大于等于指定数字的最小整数
SELECT CEIL(123.456);
-
RAND()
:返回一个随机的浮动值(通常在 0 和 1 之间)
SELECT RAND();
4. 日期和时间函数(Date and Time Functions)
用于处理日期和时间数据的函数。
-
NOW()
:返回当前的日期和时间
SELECT NOW();
-
CURDATE()
:返回当前的日期
SELECT CURDATE();
-
CURTIME()
:返回当前的时间
SELECT CURTIME();
-
DATE()
:从日期时间中提取日期部分
SELECT DATE('2025-01-11 12:30:00');
-
YEAR()
:返回日期中的年份部分
SELECT YEAR('2025-01-11');
-
MONTH()
:返回日期中的月份部分
SELECT MONTH('2025-01-11');
-
DAY()
:返回日期中的天部分
SELECT DAY('2025-01-11');
-
DATEDIFF()
:返回两个日期之间的差值(天数)
SELECT DATEDIFF('2025-01-11', '2025-01-01');
-
DATE_ADD()
:在日期上加上指定的时间间隔
SELECT DATE_ADD('2025-01-01', INTERVAL 5 DAY);
5. 条件函数(Conditional Functions)
用于基于条件选择结果的函数。
-
IF()
:在 SQL 中执行条件判断
SELECT IF(salary > 50000, 'High', 'Low') FROM employees;
-
CASE
:执行更复杂的条件判断
SELECT CASE
WHEN salary > 50000 THEN 'High'
WHEN salary BETWEEN 30000 AND 50000 THEN 'Medium'
ELSE 'Low'
END AS salary_level
FROM employees;
6. 转换函数(Conversion Functions)
用于转换数据类型的函数。
-
CAST()
:转换数据类型
SELECT CAST(salary AS CHAR) FROM employees;
-
CONVERT()
:转换数据类型(通常与CAST()
类似)
SELECT CONVERT(salary, CHAR) FROM employees;
7. 窗口函数(Window Functions)
这些函数在查询结果的“窗口”中计算值,而无需聚合整个表。
-
ROW_NUMBER()
:返回结果集中的行号
SELECT ROW_NUMBER() OVER (ORDER BY salary DESC) AS row_num, name, salary
FROM employees;
-
RANK()
:为每一行分配排名
SELECT RANK() OVER (ORDER BY salary DESC) AS rank, name, salary
FROM employees;
-
DENSE_RANK()
:分配排名,跳过相同排名值的行
SELECT DENSE_RANK() OVER (ORDER BY salary DESC) AS dense_rank, name, salary
FROM employees;
-
NTILE()
:将数据分为指定数量的桶
SELECT NTILE(4) OVER (ORDER BY salary DESC) AS quartile, name, salary
FROM employees;
8. 其他函数
-
ISNULL()
或COALESCE()
:处理 NULL 值,不是空值,返回原本值,是空值,返回替代值0
SELECT ISNULL(salary, 0) FROM employees;
-
JSON_EXTRACT()
:提取 JSON 字段中的数据
SELECT JSON_EXTRACT(details, '$.address.city') FROM users;
这些函数在不同的 SQL 数据库(如 MySQL、PostgreSQL、SQL Server、Oracle)中可能略有差异,因此在具体使用时应参考相应的数据库文档。
标签:salary,Functions,函数,employees,集锦,SQL,SELECT,name From: https://blog.csdn.net/m0_65776770/article/details/145076332