目录

  1. SQL 函数简介
  2. 常见的 SQL 函数
    1. 聚合函数
    2. 字符函数
    3. 数学函数
    4. 日期和时间函数
    5. 转换函数
  3. SQL 函数的使用示例
  4. 参考资料

SQL 函数简介

SQL 函数是用于处理数据的内置操作,允许你在查询中对数据进行处理、转换或计算。SQL 提供了多种函数类型,常见的包括聚合函数、字符函数、数学函数、日期和时间函数、转换函数等。函数可以用于 SELECT 语句、WHERE 子句、ORDER BY 子句等。

SQL 函数大体上可以分为两类:

  1. 标量函数(Scalar Functions):返回单个值。
  2. 聚合函数(Aggregate Functions):返回一组值的计算结果。

常见的 SQL 函数

1. 聚合函数

聚合函数用于对一组数据进行计算,返回单个值。常见的聚合函数有:

  • COUNT():返回某个列中非 NULL 值的数量。
  • SUM():返回某列的总和(通常用于数字类型列)。
  • AVG():返回某列的平均值。
  • MIN():返回某列的最小值。
  • MAX():返回某列的最大值。

示例

SELECT COUNT(*) FROM employees;
SELECT AVG(salary) FROM employees WHERE department = 'IT';

2. 字符函数

字符函数用于处理字符串数据,常见的字符函数包括:

  • CONCAT():连接两个或多个字符串。
  • LENGTH()LEN():返回字符串的长度。
  • UPPER():将字符串转换为大写。
  • LOWER():将字符串转换为小写。
  • TRIM():去除字符串两端的空白字符。
  • SUBSTRING()SUBSTR():提取字符串的一部分。
  • REPLACE():替换字符串中的某些字符。
  • INSTR():返回子字符串在字符串中首次出现的位置。

示例

SELECT CONCAT(first_name, ' ', last_name) AS full_name FROM employees;
SELECT UPPER(name) FROM customers;
SELECT SUBSTRING(address, 1, 10) FROM customers;

3. 数学函数

数学函数用于对数字进行各种数学运算,常见的数学函数包括:

  • ROUND():四舍五入某个数字。
  • CEIL()CEILING():返回大于或等于给定数字的最小整数。
  • FLOOR():返回小于或等于给定数字的最大整数。
  • ABS():返回数字的绝对值。
  • POWER():返回数字的指定幂。
  • SQRT():返回数字的平方根。

示例

SELECT ROUND(price, 2) FROM products;
SELECT CEIL(price) FROM products;
SELECT ABS(-100) FROM transactions;

4. 日期和时间函数

日期和时间函数用于处理日期和时间数据,常见的日期和时间函数包括:

  • NOW()CURRENT_TIMESTAMP:返回当前的日期和时间。
  • CURDATE()CURRENT_DATE:返回当前的日期。
  • CURTIME()CURRENT_TIME:返回当前的时间。
  • DATE_ADD()DATE_SUB():对日期加上或减去指定的时间间隔。
  • DATEDIFF():计算两个日期之间的天数。
  • YEAR()MONTH()DAY():提取日期的年、月、日部分。
  • EXTRACT():从日期中提取特定的时间部分,如年、月、日、小时、分钟、秒等。

示例

SELECT NOW();
SELECT DATE_ADD('2025-01-01', INTERVAL 10 DAY);
SELECT DATEDIFF('2025-01-10', '2025-01-01');
SELECT YEAR(hire_date) FROM employees;

5. 转换函数

转换函数用于数据类型之间的转换,常见的转换函数包括:

  • CAST():将一个数据类型转换为另一个数据类型。
  • CONVERT():与 CAST() 类似,但语法稍有不同,主要用于 MySQL 和 SQL Server。
  • TO_DATE():将字符串转换为日期(在 Oracle 中使用)。
  • TO_CHAR():将日期或数字转换为字符(在 Oracle 中使用)。

示例

SELECT CAST(price AS DECIMAL(10,2)) FROM products;
SELECT CONVERT(varchar, order_date, 120) FROM orders;
SELECT TO_DATE('2025-01-01', 'YYYY-MM-DD') FROM orders;


SQL 函数的使用示例

示例 1:使用聚合函数计算员工的平均薪资

SELECT department, AVG(salary) AS average_salary
FROM employees
GROUP BY department;

示例 2:使用字符函数将名字和姓氏连接成完整姓名

SELECT CONCAT(first_name, ' ', last_name) AS full_name
FROM employees;

示例 3:计算某一订单的日期差

SELECT DATEDIFF(order_date, NOW()) AS days_since_order
FROM orders;

示例 4:将字符串转换为大写字母

SELECT UPPER(product_name) AS uppercase_name
FROM products;

示例 5:计算商品的价格加上10%的税

SELECT product_name, price, price * 1.10 AS price_with_tax
FROM products;


参考资料