字符串类型是最常用的几种数据类型之一,分为变长和定长等类型。本节将详细讲解它们的使用方法。
PostgreSQL中的字符串类型见表5-8。
表5-8 字符串类型列表
varchar(n)和char(n)分别是character varying(n)和character(n)的别名,未声明长度的character等价于character(1);如果使用character varying时不带长度说明词,那么该类型接受任何长度的字符串。不带长度说明词是PostgreSQL的扩展,其他数据库中一般不能这样使用。
这些类型的存储长度是4字节加上实际的字符串长度,比如,character的存储长度为4+n,n为定义时的长度。长的字符串会被系统自动压缩,因此在磁盘上的物理长度可能会更小些。长的内容也可能会存储在toast表中,这里只放一个指针,这样它们就不会干扰对短字段值的快速访问了。不管怎样,允许存储的最长字符串大概是1GB。
虽然在某些其他的数据库系统里,定长的character(n)有一定的性能优势,但在PostgreSQL中,定长的character(n)与varchar(n)没有差别。故在大多数情况下,建议使用text或varchar。
字符串类型有丰富的函数和操作符,具体见表5-9。
表5-9 标准SQL字符串函数和操作符
除了表5-9中所列的字符串和操作符以外,还有其他的字符串操作函数可以使用(见表5-10),其中有些用于在内部实现表5-9中列出的SQL标准字符串函数。
表5-10 其他字符串函数