TOP

SQL-第 7 课:数据处理函数

与大多数编程语言一样,SQL 具有处理数据的功能。值得注意的是,与SQL语句不同,函数并不是针对所有类型的DBMS进行标准化的,即为了对数据执行相同的操作,不同的DBMS有自己的函数名称。这意味着在一个 DBMS 中编写的查询代码可能无法在另一个 DBMS 中工作,将来应该考虑到这一点。这主要适用于处理文本值、转换数据类型和操作日期的函数。


大多数 DBMS 支持一组标准的函数类型,即:

  • 用于文本处理的文本函数(从文本中提取部分字符、确定文本长度、将字符转换为大写或小写……);
  • 数值函数。它们用于对数值执行数学运算;
  • 日期和时间函数(执行日期和时间操作、计算日期之间的周期、检查日期的正确性等);
  • 统计功能(用于计算最大/最小值、平均值、计算数量和总和...);
  • 系统功能(提供DBMS、用户等各类服务信息)。
  • 1.用于文本处理的SQL函数

    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
    

    2.处理数字的SQL函数

    数字处理函数旨在对数值数据执行数学运算。这些函数是为代数和几何计算而设计的,因此它们的使用频率比日期和时间处理函数要少得多。然而,数值函数是所有 SQL 版本中最标准化的。让我们看一下数值函数列表:

    功能 描述
    SQR() 返回指定数字的平方根
    ABS() 返回数字的绝对值
    EXP() 返回指定数字的指数
    SIN() 返回指定角度的正弦值
    COS() 返回指定角度的余弦值
    TAN() 返回指定角度的正切值

    我们仅列出了一些主要功能,但您始终可以参考 DBMS 文档,获取受支持功能的完整列表以及详细说明。

    例如,让我们编写一个查询,使用 SQR() 函数获取 Amount 列中数字的平方根:

    Run SQLSELECT Amount, SQR(Amount) AS Amount_SQR 
    FROM Sumproduct
    
    MySQL 使用 SQRT() 函数来获取数字的平方根。

    3.用于日期和时间处理的SQL函数

    日期和时间操作函数是最重要和最常用的 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”,等等)。

    4. SQL统计函数

    统计函数可以帮助我们在不采样的情况下准备好数据。具有这些函数的 SQL 查询通常用于分析和生成各种报告。这种选择的一个例子可以是:确定表中的行数、获取某个字段的值的总和、搜索表的指定列中的最大/最小或平均值。我们还注意到,所有 DBMS 都支持统计函数,无需进行任何特殊的书面更改。

    DBMS Access 中的统计函数列表:

    功能 描述
    COUNT() 返回表或列中的行数
    SUM() 返回列中值的总和
    MIN() 返回列中的最小值
    MAX() 返回列中的最大值
    AVG() 返回列中的平均值

    4.1 COUNT()函数的使用示例

    返回表中所有行的数量:

    Run SQLSELECT COUNT(*) AS Count1 
    FROM Sumproduct
    

    返回“产品”字段中所有非空行的数量:

    SELECT COUNT(Product) AS Count2 
    FROM Sumproduct
    

    我们特意删除了“产品”列中的一个值,以显示两个查询之间的性能差异。

    4.2 SUM()函数的使用示例

    Run SQLSELECT SUM(Quantity) AS Sum1 
    FROM Sumproduct 
    WHERE Month = 'April'
    

    通过这个请求,我们显示了 4 月份的商品销售总额。

    Run SQLSELECT SUM(Quantity*Amount) AS Sum2 
    FROM Sumproduct
    

    正如您所看到的,在统计函数中,我们还可以使用标准数学运算符对多个列进行计算。

    4.3 MIN()函数的使用示例

    Run SQLSELECT MIN(Amount) AS Min1 
    FROM Sumproduct
    

    4.4 使用MAX()函数的示例

    Run SQLSELECT MAX(Amount) AS Max1 
    FROM Sumproduct
    

    4.5 使用函数AVG()的示例

    Run SQLSELECT AVG(Amount) AS Avg1
    FROM Sumproduct