与大多数编程语言一样,SQL 具有处理数据的功能。值得注意的是,与SQL语句不同,函数并不是针对所有类型的DBMS进行标准化的,即为了对数据执行相同的操作,不同的DBMS有自己的函数名称。这意味着在一个 DBMS 中编写的查询代码可能无法在另一个 DBMS 中工作,将来应该考虑到这一点。这主要适用于处理文本值、转换数据类型和操作日期的函数。
大多数 DBMS 支持一组标准的函数类型,即:
MS Access 中的 SQL 实现具有以下用于文本处理的函数:
功能 | 描述 |
---|---|
Left() | 从左侧选择文本中的字符 |
Right() | 选择右侧文本中的字符 |
Mid() | 从文本中间选择字符 |
UCase() | 将字符转换为大写 |
LCase() | 将字符转换为小写 |
LTrim() | 删除文本左侧的所有空白字符 |
RTrim() | 删除文本右侧的所有空白字符 |
Trim() | 删除文本两侧的所有空白字符 |
让我们使用 UCase() 函数将产品名称转换为大写:
Run SQLSELECT Product, UCase(Product) AS Product_UCase
FROM Sumproduct
让我们使用 LEFT() 函数分隔文本中的前三个字符:
Run SQLSELECT Product, LEFT(Product, 3) AS Product_LEFT
FROM Sumproduct
数字处理函数旨在对数值数据执行数学运算。这些函数是为代数和几何计算而设计的,因此它们的使用频率比日期和时间处理函数要少得多。然而,数值函数是所有 SQL 版本中最标准化的。让我们看一下数值函数列表:
功能 | 描述 |
---|---|
SQR() | 返回指定数字的平方根 |
ABS() | 返回数字的绝对值 |
EXP() | 返回指定数字的指数 |
SIN() | 返回指定角度的正弦值 |
COS() | 返回指定角度的余弦值 |
TAN() | 返回指定角度的正切值 |
我们仅列出了一些主要功能,但您始终可以参考 DBMS 文档,获取受支持功能的完整列表以及详细说明。
例如,让我们编写一个查询,使用 SQR() 函数获取 Amount 列中数字的平方根:
Run SQLSELECT Amount, SQR(Amount) AS Amount_SQR
FROM Sumproduct
日期和时间操作函数是最重要和最常用的 SQL 函数之一。在数据库中,日期和时间值以特殊格式存储,因此不经过额外处理就无法直接使用。每个 DBMS 都有自己的一组用于处理日期的函数,不幸的是,这不允许它们转移到其他平台和 SQL 实现。
MS Access 中处理日期和时间的一些函数列表:
功能 | 描述 |
---|---|
DatePart() | 返回日期的一部分:年、季度、月、周、日、小时、分钟、秒 |
Year(), Month() | 分别返回年份和月份 |
Hour(), Minute(), Second() | 返回指定日期的小时、分钟和秒 |
WeekdayName() | 返回星期几的名称 |
让我们看一个 DatePart() 函数如何工作的示例:
SELECT Date1, DatePart("m", Date1) AS Month1
FROM Sumproduct
DatePart() 函数有一个附加参数,允许我们显示日期的所需部分。在示例中,我们使用参数“m”的值,它显示月份数(同样,我们可以显示年份 - “yyyy”,季度 - “q”,日期 - “d”,周 - “w”,小时 - “h”,分钟 - “n”,秒 - “s”,等等)。
统计函数可以帮助我们在不采样的情况下准备好数据。具有这些函数的 SQL 查询通常用于分析和生成各种报告。这种选择的一个例子可以是:确定表中的行数、获取某个字段的值的总和、搜索表的指定列中的最大/最小或平均值。我们还注意到,所有 DBMS 都支持统计函数,无需进行任何特殊的书面更改。
DBMS Access 中的统计函数列表:
功能 | 描述 |
---|---|
COUNT() | 返回表或列中的行数 |
SUM() | 返回列中值的总和 |
MIN() | 返回列中的最小值 |
MAX() | 返回列中的最大值 |
AVG() | 返回列中的平均值 |
返回表中所有行的数量:
Run SQLSELECT COUNT(*) AS Count1
FROM Sumproduct
返回“产品”字段中所有非空行的数量:
SELECT COUNT(Product) AS Count2
FROM Sumproduct
我们特意删除了“产品”列中的一个值,以显示两个查询之间的性能差异。
Run SQLSELECT SUM(Quantity) AS Sum1
FROM Sumproduct
WHERE Month = 'April'
通过这个请求,我们显示了 4 月份的商品销售总额。
Run SQLSELECT SUM(Quantity*Amount) AS Sum2
FROM Sumproduct
正如您所看到的,在统计函数中,我们还可以使用标准数学运算符对多个列进行计算。
Run SQLSELECT MIN(Amount) AS Min1
FROM Sumproduct
Run SQLSELECT MAX(Amount) AS Max1
FROM Sumproduct
Run SQLSELECT AVG(Amount) AS Avg1
FROM Sumproduct