PostgreSQL 字符类型
本文介绍了 PostgreSQL 中的三种字符数据类型:CHAR
,VARCHAR
,和 TEXT
。
字符类型以文本形式存储数据,PostgreSQL 提供了三种字符数据类型: CHAR
,VARCHAR
,和 TEXT
。
PostgreSQL 字符类型用法
下面说明了 PostgreSQL 中的三种字符类型的用法:
CHAR(n)
存储固定长度的字符串,长度不足时,使用空白填充。VARCHAR(n)
存储具有长度限制的可变长度文本。VARCHAR
存储没有长度限制的可变长度文本。 它与TEXT
完全相同。TEXT
存储没有长度限制的可变长度文本。
CHAR(n)
和 VARCHAR(n)
最多可存储 n
字符。 VARCHAR
与 TEXT
完全相同。
对于限制了长度的字符类型来说,如果写入的内容超过了限制的长度,PostgreSQL 采用如下的策略:
- 如果超出长度的部分只有空格,则多余的空格会被截断。
- 如果超出长度的部分不只是空格,则给出错误提示。
在 PostgreSQL 中,三种字符类型之间没有性能差异,因此你只需要根据的需要选择合适的类型即可。通常您应该使用 TEXT
或者 VARCHAR
。
PostgreSQL 字符类型示例
这个示例说明了 CHAR
, VARCHAR
以及 TEXT
数据类型是如何工作的。
使用下面的语句创建一个新表用于测试:
CREATE TABLE test_character_type (
char_1 CHAR(1),
varchar_10 VARCHAR(10),
txt TEXT
);
CHAR 类型实例
使用下面的语句向表中插入一个新行超出 char_1
列长度的值:
INSERT INTO test_character_type (char_1)
VALUES('OK')
RETURNING *;
PostgreSQL 发出错误:
ERROR: value too long for type character(1)
这是因为该 char_1
列的数据类型是 CHAR(1)
,我们试图在该列中插入一个包含 2 个字符的字符串: 'OK'
。
使用下面的语句向表中插入一个新行超出 char_1
列长度的值,超出的部分为空格:
INSERT INTO test_character_type (char_1)
VALUES('Y ')
RETURNING *;
char_1 | varchar_10 | txt
--------+------------+-----
Y | |
这里插入成功了。这是因为超出的部分是空格,PostgreSQL 自动截断了空格。
VARCHAR 类型实例
使用下面的语句向表中插入一个新行超出 varchar_10
列长度的值:
INSERT INTO test_character_type (varchar_10)
VALUES('Hello World')
RETURNING *;
PostgreSQL 发出错误:
ERROR: value too long for type character varying(10)
这是因为该 varchar_10
列的数据类型是 VARCHAR(10)
,我们试图在该列中插入一个包含 11 个字符的字符串: 'Hello World'
。
使用下面的语句向表中插入一个新行超出 varchar_10
列长度的值,超出的部分为空格:
INSERT INTO test_character_type (varchar_10)
VALUES('HelloWorld ')
RETURNING *;
char_1 | varchar_10 | txt
--------+------------+-----
| HelloWorld |
(1 row)
这里插入成功了。这是因为超出的部分是空格,PostgreSQL 自动截断了空格。
TEXT 类型实例
使用下面的语句向表中插入一个新行:
INSERT INTO test_character_type (txt)
VALUES('TEXT column can store a string of any length')
RETURNING txt;
txt
----------------------------------------------
TEXT column can store a string of any length
(1 row)
对于一个 TEXT
列,您可以插入任意长度的字符串。
结论
PostgreSQL 提供了三种字符数据类型: CHAR
,VARCHAR
,和 TEXT
。 CHAR
是固定长度的字符类型,而 VARCHAR
和 TEXT
具有可变的长度的字符类型。