📜  PostgreSQL Varchar

📅  最后修改于: 2020-11-30 07:33:06             🧑  作者: Mango

PostgreSQL Varchar

在本节中,我们将了解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数据类型定义了长度说明符,或者尝试在Varchar(n)列中插入n个以上的字符, PostgreSQL将检查并引发错误。

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

PostgreSQL Varchar数据类型的语法

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

variable_name VARCHAR(n)

PostgreSQL Varchar数据类型的示例

让我们看不同的示例,以了解PostgreSQL Varchar数据类型如何工作。

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

我们将使用CREATE命令将Varchar_demo创建到Organization数据库中:

CREATE TABLE Varchar_demo (
    Id serial PRIMARY KEY,
    P VARCHAR(1),
    Q VARCHAR(10)
);

输出量

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

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

INSERT INTO Varchar_demo (P, Q)
VALUES ('Javatpoint',
        'It is a demo for Varchar'
        );

输出量

执行完上述命令后,我们将获得以下输出,PostgreSQL将发出一个错误:“对于类型字符变化(1)该值太长”。

这意味着P列的数据类型是VARCHAR(1) ,并且在这里我们尝试在特定的列中插入包含三个字符的字符串,如下面的屏幕快照所示:

要解决以上错误,我们将使用以下命令,如下所示:

INSERT INTO Varchar_demo (P, Q)
VALUES ('J',
        'It is a demo for Varchar'
        );

输出量

在执行上述命令时,PostgreSQL对Q列重新发出类似的错误,这意味着Q列的数据类型为VARCHAR(10) 。相反,如下面的屏幕截图所示,输入的字符数超过10个

因此,要解决以上两个错误,我们将使用以下命令:

INSERT INTO Varchar_demo (P, Q)
VALUES ('J',
        'Javatpoint'
        );

输出量

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

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

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

SELECT * FROM Varchar_demo;

输出量

执行上述命令后,我们将获得以下结果,可以看到将Column P和Column Q的值都成功输入到Varchar_demo表中。

例子2

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

我们将使用CREATE命令将Varchar_demo2创建到与上面类似的组织数据库中:

CREATE TABLE Varchar_demo2 (  
   Id SERIAL PRIMARY KEY,  
   Name VARCHAR(5) NOT NULL  
);  

输出量

执行上述命令后,已成功创建Varchar_demo2表,如以下屏幕快照所示:

生成Varchar_demo2表后,我们可以使用INSERT命令在其中插入一些值。

INSERT INTO 
Varchar_demo2(Name) 
VALUES ('Mike Ross');  

输出量

执行完以上命令后。 PostgreSQL给出错误消息“对于字符(1)类型,该值太长”。输出更清楚地说明了这一点。

PostgreSQL VARCHAR和空格的示例

PostgreSQL在存储时不扩展varchar值的空间,而PostgreSQL在存储或恢复Varchar值时也使用尾随空格。

为此,我们将看到下面的示例以了解其中的“插入”命令,并在上面的示例中创建的Varchar_demo2表的“名称”列中添加值:

INSERT INTO 
Varchar_demo2(Name) 
VALUES ('Noah ');  

输出量

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

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

SELECT Id, Name, length(Name) 
FROM Varchar_demo2; 

输出量

执行上述命令后,我们将获得以下结果,其中PostgreSQL在长度计数中包含尾随空格,因为它不会增加列长度。

如果我们尝试插入一个Varchar值,并且尾随空格超过列的长度,PostgreSQL将截断尾随空格。另外,PostgreSQL也会发出警告。如下面的示例所示:

INSERT INTO 
Varchar_demo2(Name) 
VALUES ('Emily ');

输出量

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

在上面的命令中,“名称”列中的插入值长度为6。并且该值仍插入到列中。但是,PostgreSQL在添加值之前会先删除尾随空间。

我们可以在以下命令的帮助下进行检查,其中成功添加了Insert命令。

SELECT Id, Name, length(Name) 
FROM Varchar_demo2; 

输出量

实施上述命令后,我们仍将获得以下输出,并显示警告:行1的“名称”列的数据被截断

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

PostgreSQL CHAR和VARCHAR数据类型都遵循ASCII字符。它们实际上是相似的,但是在从数据库存储和获取数据方面有所不同。

下表突出显示了CHAR和VARCHAR数据类型之间的本质区别:

PostgreSQL CHAR data type PostgreSQL VARCHAR data type
PostgreSQL supports static memory allocation for the Char data type. The PostgreSQL supports dynamic memory allocation for the Varchar data type.
The Char data type is also known as Character. The Varchar data type is also called Variable Character.
The char data type cannot hold more than 255 characters. The Varchar data type can hold up to 65535 characters.
The Char data type stores the values in fixed length, which we represent while creating a table. The Varchar data type stores the values in a variable-length string with one or two-byte length prefix.
It can be padded with trailing space to contain the specified length. It cannot be padded with any character, with space, when they are stored.

总览

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

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