PostgreSQL 数组

17 Mar 2025 | 5 分钟阅读

在本节中,我们将了解 PostgreSQL 数组数据类型 的工作原理、数组数据类型的示例,以及一些可访问的数组函数,例如 unnest()、ANY(),它们可以帮助我们更有效地处理 数组值。 我们还将看到在 WHERE 子句中使用数组元素的示例。

什么是 PostgreSQL 数组数据类型?

PostgreSQL 中,数组数据类型扮演了重要的角色。 众所周知,每个数据类型都有其配套的数组类型,例如 charactercharacter[] 数组类型,integerinteger[] 数组类型等。

PostgreSQL 允许我们将列指定为任何有效 数据类型 的数组,其中包括 用户定义的数据类型、枚举数据类型和内置数据类型

注意:PostgreSQL 会在后台为我们生成一个一致的数组类型,以描述我们的数据类型。

PostgreSQL 数组数据类型的语法

PostgreSQL 数组数据类型的语法如下

PostgreSQL 数组数据类型的示例

让我们看一些示例,了解 PostgreSQL 数组数据类型 的工作原理。

我们正在使用 CREATE 命令创建一个新表 person_details,并使用 INSERT 命令插入一些值。

创建 PostgreSQL 数组表

person_details 表包含各种列,例如 id、person_name 和 Mobile_numbers,对于 Mobile_number 列,我们使用包含多个人可能拥有的几个手机号码的 一维数组

输出

执行上述命令后,我们将获得以下消息窗口,该窗口显示 person_details 表已成功创建到 Organization 数据库中。

PostgreSQL Array

插入 PostgreSQL 数组值

成功创建 person_details 表后,我们将使用 INSERT 命令向其中插入一些值。

输出

执行上述命令后,我们将获得以下消息窗口,该窗口显示值已成功插入到 person_details 表中。

PostgreSQL Array

在上面的插入命令中,我们使用了 ARRAY 构造函数来创建一个数组并将其添加到 Person_details 表中。

我们还可以使用 花括号 {} 而不是使用方括号 [],正如我们可以在以下命令中看到的那样

输出

执行上述命令后,我们将获得以下消息窗口,该窗口显示已成功将三个值插入到 person_details 表中。

PostgreSQL Array

注意:正如我们在上述命令中看到的,当我们使用花括号 {} 时,我们使用单引号 ' ' 来包含数组,并使用双引号 " " 来包含文本数组项。

选择 PostgreSQL 数组数据值

在创建和插入 person_details 表的值后,我们将使用 SELECT 命令返回 person_details 表的所有行

输出

成功执行上述命令后,我们将获得以下输出,该输出显示 person_details 表中存在的所有数据

PostgreSQL Array

默认情况下,如果我们使用 方括号 [] 内的下标访问数组元素,PostgreSQL 使用 基于 1 的数组元素编号,这意味着第一个数组元素从 数字 1 开始。

假设我们需要返回 人的姓名 和第一个 手机号码,正如我们在以下命令中看到的那样

输出

执行上述命令后,我们将获得以下结果,该结果显示了 person_details 表中某人的第一个 手机号码

PostgreSQL Array

使用 where 子句查找 PostgreSQL 数组元素

为了过滤行,我们可以在 WHERE 子句中使用数组元素作为条件。

在下面的示例中,我们将使用以下命令来识别那些 手机号码(308)-589-23458 作为第二个手机号码的人

输出

成功执行上述命令后,我们将获得以下输出,该输出显示了 person_name 有两个以上 手机号码。

PostgreSQL Array

更改 PostgreSQL 数组

PostgreSQL 允许我们更新整个数组或数组的所有元素。

以下命令用于更新 David smith第二个手机号码

输出

执行上述命令后,我们将获得以下消息窗口,该窗口显示特定值已成功更新。

PostgreSQL Array

要整体更新数组,我们可以使用以下命令

输出

执行上述命令后,我们将获得以下消息窗口,该窗口表示整个数组

PostgreSQL Array

之后,我们将使用以下命令;我们将借助 SELECT 命令检查更新后的值

输出

成功执行上述命令后,我们将获得以下输出,该输出显示了指定的更新值。

PostgreSQL Array

展开 PostgreSQL 数组数据类型

为了将数组扩展到行列表,PostgreSQL 提供了 unnest() 函数。

让我们看一个例子,了解如何使用 unnest() 函数展开数组

在下面的示例中,以下命令展开了 mobile_number 数组的所有手机号码。

输出

执行上述命令后,我们将获得以下输出,该输出显示了扩展到行列表的数组。

PostgreSQL Array

在 PostgreSQL 数组中搜索

如果我们想识别谁拥有以下 手机号码 (555)-333-5432 而与 mobile_number 数组的位置无关,我们可以使用 ANY() 函数,如下面的命令所示

输出

执行上述命令后,我们将获得以下结果

PostgreSQL Array

概述

PostgreSQL 数组数据类型 部分,我们学习了以下主题

  • PostgreSQL 数组数据类型用于存储指定列的数组值。
  • 我们在 WHERE 子句中使用 数组元素来过滤从指定表中检索的行。
  • 我们使用了不同的数组函数;例如,ANY() 函数用于在 PostgreSQL 数组中搜索。
  • unnest() 函数用于将数组扩展到处理特定表的数组值的行列表。