Skip to Content
《SQL 概论》,第 4 版
book

《SQL 概论》,第 4 版

by Kevin Kline, Regina O. Obe, Leo S. Hsu
May 2025
Intermediate to advanced
840 pages
11h 4m
Chinese
O'Reilly Media, Inc.
Book available
Content preview from 《SQL 概论》,第 4 版

第 7 章 SQL 内置函数 SQL 内置函数

本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com

函数是 SQL 命令集中一种特殊类型的命令字,每种 SQL 方言对该命令集的实现方式各不相同。函数的值可以由输入参数决定,例如函数可以求数据库值列表的平均值。不过,许多函数不使用任何类型的输入参数。返回当前系统时间的函数 就是这样一个例子。函数还可以返回表格或行集。这类函数通常被称为CURRENT_TIME集合返回函数。

SQL 标准支持许多有用的函数。本章和下一章将介绍这些函数,并为每个平台提供详细说明和示例。我们不会涵盖所有函数,但会重点介绍最常用的函数。此外,每个数据库都支持 SQL 标准范围之外的大量内部函数;每章末尾都列出了每个供应商的这些函数。

就 MariaDB 和 MySQL 而言,除了 MariaDB 与 MySQL 行为有偏差的情况外,我们将只提及 MySQL。

大多数数据库平台都支持创建用户自定义函数 (UDF) 的功能。有关 UDF 的详细信息,请参阅第 9 章。JSON 和 XML 函数将在第 10 章中介绍,本章和下一章将不再讨论。

如何使用本章

研究本章中的函数时:

  1. 检查 SQL 语法并阅读说明,即使您正在寻找特定的平台实现。

  2. 阅读特定平台的实施信息。

在各平台章节中,将不讨论供应商实现中与标准无差异的内容;这些章节仅指出与标准的任何差异。有关特定平台部分未提供的详细信息,请参阅 SQL 语法部分。

功能类型

有不同的方法可以将函数分为不同的组。以下各小节介绍了对理解函数如何工作至关重要的区别。

确定性函数和非确定性函数

函数可以是确定性的,也可以是非确定性的。如果输入值相同,确定性函数总是返回相同的结果。非确定性 函数即使提供相同的输入值,每次调用也可能返回不同的结果。

为什么给定的输入总是返回相同的输出?这与如何在视图和索引、用户自定义函数以及存储过程中使用函数有关。不同的实现有不同的限制,但这些对象有时只允许在其定义代码中使用确定性函数。例如,许多数据库允许在列表达式上创建索引,但前提是表达式不包含任何非确定性函数。详情请查看平台文档。

汇总功能

对函数进行分类的另一种方法是,看它们是一次只对一行中的值进行操作,还是对一个集合中的值进行操作,或者是对一组行进行操作。聚合函数对数值集合进行操作,并返回一个汇总值。聚合函数还经常与GROUP BYHAVING 子句结合使用,以确定数据组的数量。我们将在下一章介绍聚合。

Windows 功能

窗口函数与聚合函数类似,都是一次对多条记录进行操作。区别在于如何定义这些记录。聚合函数对查询的GROUP BY 子句定义的记录集进行操作。而使用窗口函数时,每次函数调用都要指定记录集,因此在同一查询中对函数的不同调用可以在不同的记录集上执行。窗口函数返回的行数与开始时的行数相同,而使用聚合函数的查询结果会将分组行折叠为一个值。在很多情况下,聚合函数可以像窗口函数一样使用。在这些情况下,聚合函数和其他 Windows 函数调用一样,都有一个OVER() 子句。

SQL 函数

本章我们将重点讨论不属于聚合函数或 Windows 函数的函数。这些函数可能是确定性的,也可能是非确定性的,它们可能返回表格,也可能返回单个值。SQL 标准提供了许多函数,可用于操作集合、字符串和数字,以及检索当前用户或系统时间等系统信息。这些函数属于表 7-1 中列出的类别。

表 7-1. 功能类别
功能类别 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

《MySQL 烹饪书》第 4 版

《MySQL 烹饪书》第 4 版

Sveta Smirnova, Alkin Tezuysal
SQL 入门

SQL 入门

Thomas Nield
CSS:权威指南,第 5 版

CSS:权威指南,第 5 版

Eric Meyer, Estelle Weyl

Publisher Resources

ISBN: 9798341658820