SQL 定义了两种基本的字符类型: character 和 character varying. Postgres 支持这些类型, 并且还支持更通用的text 类型, 该类型不象 varchar 一样必须要定义一个数据域的上限.
请参考 Section 1.1.2.1 获取关于字串文本的语法的信息,以及 Chapter 4 获取关于可用操作符和函数的信息.
Table 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) 是不一样的,它只用了一个字节的存储空间.它在系统内部用于系统表 当做穷人的枚举类型用.
Table 3-5. 特殊字符类型
字符类型 | 存储空间 | 描述 |
---|---|---|
"char" | 1 字节 | 单字节内部类型 |
name | 32 字节 | 三十一字符内部类型 |