PostgreSQL Varchar

17 Mar 2025 | 6 分钟阅读

在本节中,我们将了解 PostgreSQL varchar 数据类型的工作原理,它允许我们存储任意长度的字符。我们还将了解 Varchar 数据类型和空格的示例

什么是 PostgreSQL Varchar 数据类型?

PostgreSQL 中,Varchar 数据类型用于存储无限长度的字符。它可以容纳最大长度为 65,535 字节的字符串。

换句话说,我们可以说 PostgreSQL Varchar 数据类型使用了表示为 VARCHAR 的字符数据类型。

  • 大多数情况下,我们应该使用 Varchar 和 Text 数据类型。如果希望 PostgreSQL 检查长度,则使用 VARCHAR(n)
  • 在 PostgreSQL 中,varchar 的表示方式为 Varchar(n),其中 n 用于表示字符长度的限制。如果未指定 n,则默认为具有无限长度的 Varchar。
  • 如果我们尝试将一个较长的字符串插入到指定为 Varchar(n) 的列中,PostgreSQL 会在输出中产生错误。
  • 但是,如果额外的字符全部是空格,PostgreSQL 会将空格修剪最大长度 (n)存储字符串,这时有一个例外。
  • 如果我们为 Varchar 数据类型定义了长度说明符,或者尝试将超过 n 个字符的字符插入到 Varchar(n) 列中,PostgreSQL 会检查并引发错误。

注意:varchar 数据类型是一种可变长度字符串,可以包含特殊字符、数字和字母。n 存储的文本长度最多可以为 0 到 65535 个字符。

PostgreSQL Varchar 数据类型语法

PostgreSQL Varchar 数据类型的语法如下:

PostgreSQL Varchar 数据类型示例

让我们通过不同的示例来了解 PostgreSQL Varchar 数据类型是如何工作的。

为此,我们将使用 CREATE 命令创建一个名为 Varchar_demo 的新表,并使用 INSERT 命令插入一些值。

我们将使用 CREATE 命令在 Organization 数据库中创建 Varchar_demo 表。

输出

成功执行上述命令后,将创建 Varchar_demo 表,如下图所示。

PostgreSQL Varchar

一旦生成了 Varchar_demo 表,我们将使用 INSERT 命令向其中插入一些值。

输出

实现上述命令后,我们将得到以下输出:PostgreSQL 将发出错误“对于类型 character varying (1) 的值太长”。

这意味着 P 列的数据类型是 VARCHAR (1),而我们正尝试在该特定列中插入一个包含三个字符的字符串,正如我们在下面的截图中所见。

PostgreSQL Varchar

要解决上述错误,我们将使用下面的命令:

输出

执行上述命令后,PostgreSQL 会为 Q 列重新发出类似的错误,这意味着 Q 列的数据类型是 VARCHAR (10)。而输入的字符数超过了 10 个,正如我们在下面的截图中看到的。

PostgreSQL Varchar

因此,为了解决以上所有错误,我们将使用以下命令:

输出

执行上述命令后,我们将得到以下结果:值已成功插入到 Varchar_demo 表中。

PostgreSQL Varchar

如上图所示,我们已成功插入 P 和 Q 列的值。

创建并插入 Varchar_demo 表的值后,我们将使用 SELECT 命令返回 Varchar_demo 表的所有行。

输出

实现上述命令后,我们将得到以下结果,其中我们可以看到 Column P 和 Column Q 的值都已成功插入到 Varchar_demo 表中。

PostgreSQL Varchar

示例 2

让我们看另一个示例,以详细了解 Varchar 数据类型。我们将使用 CREATE 命令创建一个名为 Varchar_demo2 的新表,并使用 INSERT 命令插入一些值。

我们将使用 CREATE 命令在与上面相同的 Organization 数据库中创建 Varchar_demo2

输出

执行上述命令后,Varchar_demo2 表已成功创建,如下图所示。

PostgreSQL Varchar

一旦生成了 Varchar_demo2 表,我们就可以使用 INSERT 命令向其中插入一些值。

输出

实现上述命令后。PostgreSQL 会给出错误消息“对于类型 Character (1) 的值太长”。输出更清楚地解释了这一点。

PostgreSQL Varchar

PostgreSQL VARCHAR 和空格示例

PostgreSQL 在存储 varchar 值时不会扩展空间,并且 PostgreSQL 在存储或恢复 Varchar 值时也会保留尾随空格。

为此,我们将通过以下示例来理解这一点:在 Insert 命令中,我们在上面示例中创建的 Varchar_demo2 表的 Name 列中添加值。

输出

实现上述命令后,我们将得到以下结果:值已成功插入到 Varchar_demo2 表中。

PostgreSQL Varchar

创建并插入 Varchar_demo2 表的值后,我们将使用 SELECT 命令从 Varchar_demo2 表中检索值

输出

实现上述命令后,我们将得到以下结果,其中 PostgreSQL 在计算长度时包含尾随空格,因为它不会增加列的长度。

PostgreSQL Varchar

如果我们尝试插入一个尾随空格的 Varchar 值,该值超出了列的长度,PostgreSQL 会截断尾随空格。PostgreSQL 还会发出警告。正如我们在下面的示例中所示。

输出

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

PostgreSQL Varchar

在上面的命令中,插入的值长度为,插入到 Name 列中。该值仍然被插入到列中。但是,PostgreSQL 在添加值之前会截断尾随空格。

我们可以使用以下命令进行检查,其中 Insert 命令已成功添加。

输出

实现上述命令后,我们将得到以下输出,仍然有一个警告:第 1 行的列 'Name' 的数据被截断

PostgreSQL Varchar

PostgreSQL CHAR 和 PostgreSQL VARCHAR 数据类型之间的区别

PostgreSQL CHAR 和 VARCHAR 数据类型都遵循 ASCII 字符。它们在存储和从数据库检索数据方面基本相似,但存在差异。

下表重点介绍了 CHAR 和 VARCHAR 数据类型之间的主要区别。

PostgreSQL CHAR 数据类型PostgreSQL VARCHAR 数据类型
PostgreSQL 支持为 Char 数据类型进行静态内存分配。PostgreSQL 支持为 Varchar 数据类型进行动态内存分配。
Char 数据类型也称为 CharacterVarchar 数据类型也称为 Variable Character。
char 数据类型最多只能容纳 255 个字符。Varchar 数据类型最多可以容纳 65535 个字符。
Char 数据类型以固定长度存储值,我们在创建表时进行表示。Varchar 数据类型以可变长度字符串存储值,具有一到两个字节的长度前缀。
它可以用尾随空格填充以达到指定的长度。在存储时,它不能用任何字符(包括空格)填充。

概述

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

  • Varchar 数据类型用于可变长度字符类型。
  • 如果我们希望在将字符串插入或更新到列之前检查其长度 (n),我们可以使用 Varchar(n) 数据类型。
  • 我们使用了 PostgreSQL Varchar 数据类型和空格。

下一主题PostgreSQL Boolean