📅  最后修改于: 2020-11-30 07:33:06             🧑  作者: Mango
在本节中,我们将了解PostgreSQL varchar数据类型的工作原理,该数据类型使我们可以存储长度不受限制的字符。我们还看到了Varchar数据类型和空格的示例。
在PostgreSQL中,Varchar数据类型用于保留无限长度的字符。它可以容纳最大长度为65,535字节的字符串。
换句话说,我们可以说PostgreSQL Varchar数据类型使用字符数据类型,它表示为VARCHAR 。
注意:varchar数据类型是可变长度的字符串,可以包含特殊字符,数字和字母。 n存储的文本长度最大为0到65535个字符。
PostgreSQL Varchar数据类型的语法如下:
variable_name VARCHAR(n)
让我们看不同的示例,以了解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表中。
让我们再看一个示例,以详细了解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值时也使用尾随空格。
为此,我们将看到下面的示例以了解其中的“插入”命令,并在上面的示例中创建的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和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数据类型部分中,我们学习了以下主题: