SQL 函数
SQL 函数
Section titled “SQL 函数”SQL 提供了一系列丰富的内置函数来对数据执行操作。这些函数允许您直接在 SQL 查询中进行计算、数据操作和格式化,增强了数据检索和转换的能力。
SQL 中的函数大致可分为聚合函数(aggregate functions)和标量函数(scalar functions)。某些数据库还支持高级函数,例如窗口函数(window functions)。
SQL 聚合函数
Section titled “SQL 聚合函数”聚合函数对一组值(例如,一列)执行计算,并返回一个单一的汇总值。它们通常与 GROUP BY 子句一起使用,用于计算不同行组的度量。
常用的聚合函数:
AVG(column)- 返回数值列的平均值。COUNT(column_or_)- 返回行数。COUNT(column)计算指定列中的非 NULL 值,而COUNT()计算所有行。MAX(column)- 返回列中的最大值。MIN(column)- 返回列中的最小值。SUM(column)- 返回数值列的总和。
注意:像 FIRST() 和 LAST() 这样的函数不是标准的 SQL 聚合函数。要在组中获取第一个或最后一个值,通常对排序列(如日期或 ID)使用 MIN() 或 MAX(),或者在更复杂的场景中使用窗口函数。
SQL 标量函数(单行函数)
Section titled “SQL 标量函数(单行函数)”标量函数对单个输入值(来自单行)进行操作,并为每行返回一个输出值。它们可以在 SELECT 列表、 WHERE 子句和 ORDER BY 子句中使用。
不同数据库系统(例如,MySQL、PostgreSQL、SQL Server、Oracle)之间标量函数的可用性和语法可能差异很大。请务必查阅您使用的 RDBMS 文档以获取具体的函数名称和参数。以下是一些常见的类别和示例(推荐使用标准函数):
- 字符串函数:
-
UPPER(string)- 将字符串转换为大写。(标准:UPPER)LOWER(string)- 将字符串转换为小写。(标准:LOWER)SUBSTRING(string FROM start FOR length)- 从字符串中提取子字符串。(标准:SUBSTRING。变体:SUBSTR,MID)LENGTH(string)- 返回字符串的长度。(标准:LENGTH或CHAR_LENGTH。变体:LEN)CONCAT(string1, string2, ...)- 连接两个或多个字符串。(准标准:CONCAT。操作符: 许多系统中是||)TRIM([LEADING|TRAILING|BOTH] [character] FROM string)- 从字符串中移除指定字符(或空格)的前导/尾随/两侧部分。(标准:TRIM)
- 数值函数:
-
ROUND(number, decimals)- 将数值字段四舍五入到指定的小数位数。(标准:ROUND)ABS(number)- 返回数值的绝对值。CEIL(number)/CEILING(number)- 返回大于或等于该数的最小整数。FLOOR(number)- 返回小于或等于该数的最大整数。
- 日期和时间函数:
-
CURRENT_TIMESTAMP- 返回当前系统日期和时间。(标准。变体:NOW(),GETDATE(),SYSDATE)CURRENT_DATE- 返回当前系统日期。(标准)CURRENT_TIME- 返回当前系统时间。(标准)EXTRACT(part FROM date)- 从日期/时间值中提取一部分(例如,YEAR, MONTH, DAY)。(标准)- 日期格式化函数(例如,Oracle/PostgreSQL 中的
TO_CHAR,SQL Server 中的FORMAT,MySQL 中的DATE_FORMAT)在不同数据库系统之间差异很大。通常,为了可移植性,日期格式化最好在应用程序层处理。
- 类型转换函数:
-
CAST(expression AS datatype)- 将表达式转换为指定的数据类型。(标准:CAST)CONVERT(...)- 类似于 CAST,语法因 RDBMS 而异。
SQL 窗口函数(高级)
Section titled “SQL 窗口函数(高级)”窗口函数对与当前行相关的表行集执行计算。与聚合函数不同,窗口函数不会导致行被分组为单个输出行;它们保留原始行,并为每行添加一个包含函数结果的新列。
示例包括 ROW_NUMBER()、RANK()、LAG()、LEAD(),以及在窗口上使用 SUM() 或 AVG() 等聚合函数。
提示:聚合函数和常见的标量函数将在后续章节中更详细地解释。对于特定的标量函数或窗口函数,请参阅您使用的数据库系统的文档,因为它们的实现可能有所不同。