🙏 感谢您的支持! 我们在七月份已经筹集了 $65 — 这足够我们工作到下个月。请帮助我们保持进度,进一步支持这个项目。 支持这个项目 →
SQL 代码已复制到剪贴板

课程 3.1 · 阅读时间:~8 分钟

在本课程中,您将探索 SQL 函数的主题,并学习内置函数如何直接在查询中转换数据。我们将涵盖核心语法、函数类别和基于 Sakila 的实际示例。到课程结束时,您将能够自信地在真实分析工作流中应用 SQL 函数。

内置 SQL 函数

在之前的课程中,您学习了如何选择、过滤和排序行。下一步是在查询中计算和转换值,而无需额外的应用程序处理。

这正是内置 SQL 函数最有用的地方:它们使查询更具表现力,减少重复逻辑,并加快报告准备。

内置 SQL 函数


什么是内置 SQL 函数

内置 SQL 函数是 DBMS 提供的预定义操作。它接受参数并返回一个新值,例如文本、数字、日期或布尔结果。

当您需要时,使用函数:

  • 规范化文本值;
  • 在 SQL 中执行计算;
  • 提取字符串或日期的部分;
  • 在数据类型之间转换值。

基本语法

FUNCTION_NAME(argument1, argument2, ...)

其中:

  • FUNCTION_NAME 是函数名称;
  • argument1, argument2, ... 是列、字面量或其他函数的结果。

简单的函数调用示例:

SELECT
	UPPER(first_name) AS upper_name
FROM customer
LIMIT 5;

结果:每个 first_name 值被转换为大写。

您还可以使用嵌套函数调用,其中一个函数作为参数传递给另一个函数。

嵌套函数调用示例:

SELECT
	UPPER(TRIM(first_name)) AS normalized_name
FROM customer
LIMIT 5;

结果:去除前后的空格,然后将名称转换为大写。


函数常用的位置

SELECT 中的函数

SELECT 中,函数帮助塑造输出。

SELECT
	customer_id,
	CONCAT(first_name, ' ', last_name) AS full_name,
	UPPER(email) AS email_upper
FROM customer
LIMIT 10;

注意:此示例仅使用一个表,并展示了函数如何直接在 SELECT 中格式化输出列。

WHERE 中的函数

WHERE 中,函数支持基于计算条件的过滤。

SELECT
	title,
	rental_duration
FROM film
WHERE LENGTH(title) >= 15
  AND ABS(rental_duration - 5) <= 2
ORDER BY title;

结果:返回标题较长且租赁时长接近 5 天的电影。


SQL 函数的主要类型

字符串函数

示例:UPPERLOWERTRIMSUBSTRINGCONCAT

用于清理和格式化文本字段。

数学函数

示例:ROUNDABSCEILINGFLOORMOD

用于计算、舍入和数字控制。

日期和时间函数

示例:NOWCURRENT_DATEYEARMONTHDATE_ADDDATEDIFF

用于基于时间的分析和区间计算。

类型转换函数

示例:CASTCONVERT

用于当值必须显式转换为正确类型时。


实用建议

  • 始终在您的 DBMS 中验证函数行为:语法和细节可能有所不同。
  • 使用 AS 别名使计算列更易于阅读。
  • 考虑 NULL 值,因为函数结果可能变为 NULL
  • 避免在一个查询中使用深度嵌套的函数;将复杂逻辑分解为多个步骤。

本课的关键要点:

  • 内置 SQL 函数让您可以直接在查询中处理数据。
  • SELECT 中的函数塑造输出,而 WHERE 中的函数提高过滤精度。
  • 字符串、数学、日期/时间和转换函数涵盖了大多数核心需求。
  • 正确处理数据类型和 NULL 对于可预测的结果至关重要。
  • 使用得当的函数使 SQL 查询更短、更清晰,并更有利于分析。

面试问题

什么是内置 SQL 函数,它有什么用?

内置 SQL 函数是 DBMS 提供的预定义操作。它的用处在于允许您直接在查询中转换、计算和格式化数据。

为什么 SQL 函数通常在 SELECTWHERE 中使用?

SELECT 中,函数帮助格式化或计算输出值。在 WHERE 中,它们帮助使用计算条件过滤行。

什么是嵌套函数调用,何时应该使用它?

嵌套函数调用意味着将一个函数的结果传递给另一个函数。当数据需要多个转换步骤时使用,例如 UPPER(TRIM(first_name))

在下一课中,我们将重点学习 SQL 字符串函数,并学习如何有效清理和转换文本数据。

尝试解决以下任务,以巩固您在本课中学到的内容。

  1. 税务计算