历史版本。 PostgreSQL 7.1 已结束支持。 请参阅 当前版本手册.
3.3. 字符类型 #
SQL 定义了两种主要的字符类型:character 和
character varying。Postgres
支持这些类型,此外还有更通用的
text 类型;与
character varying
不同,它不要求为字段大小显式声明上限。
关于字符串字面量的语法,参见第 1.1.2.1 节;关于可用的运算符和函数,参见第 4 章。
表 3.4. 字符类型
| 类型名 | 存储尺寸 | 建议 | 描述 |
|---|---|---|---|
| character(n), char(n) | (4+n) 字节 | SQL 兼容 | 定长,空白填充 |
| character varying(n), varchar(n) | (4+n) 字节 | SQL 兼容 | 有长度限制的变长 |
| text | (4+n) 字节 | 最灵活 | 无限长度的变长 |
注意
尽管 text
类型不符合 SQL,许多其他 RDBMS
软件包也有它。
Postgres
中还有另外两种定长字符类型。name
类型仅用于存储内部系统目录的名称,并非供普通用户使用。其长度目前定义为
32 字节(31
个字符加终止符),但应使用宏
NAMEDATALEN
引用。该长度在编译时设定(因此可为特殊用途调整);默认的最大长度在未来的版本中可能改变。类型
"char"(注意引号)与
char(1)
的不同之处在于它只使用一个字节的存储。它在系统目录内部被用作一种简易的枚举类型。
表 3.5. 特殊字符类型
| 类型名 | 存储尺寸 | 描述 |
|---|---|---|
| "char" | 1字节 | 单字符内部类型 |
| name | 32字节 | 31 字符内部类型 |