3.3. 字符类型

SQL 定义了两种基本的字符类型: charactercharacter 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 字节单字节内部类型
name32 字节三十一字符内部类型