字符类型

创建表格: CREATE TABLE contact ( id serial PRIMARY KEY, phone_number bpchar(10) );
插入数据: INSERT INTO contact (phone_number) VALUES ('1234567890');
查询数据: SELECT * FROM contact;
结果: id | phone_number ----+-------------- 1 | 1234567890
CREATE TABLE test1 (a character(4));
INSERT INTO test1 VALUES ('ok');
SELECT a, char_length(a) FROM test1; -- (1)

  a   | char_length
------+-------------
 ok   |           2


CREATE TABLE test2 (b varchar(5));
INSERT INTO test2 VALUES ('ok');
INSERT INTO test2 VALUES ('good      ');
INSERT INTO test2 VALUES ('too long');
ERROR:  value too long for type character varying(5)
INSERT INTO test2 VALUES ('too long'::varchar(5)); -- explicit truncation
SELECT b, char_length(b) FROM test2;

   b   | char_length
-------+-------------
 ok    |           2
 good  |           5
 too l |           5

PostgreSQL 中还有另外两种固定长度字符类型。它们不用于常规用途,仅用于内部系统目录。该类型用于存储标识符。它的长度目前定义为 64 个字节(63 个可用字符加上终止符),但应使用源代码中的常量进行引用。长度在编译时设置(因此可针对特殊用途进行调整);默认的最大长度可能会在将来的版本中更改。类型(注意引号)的不同之处在于它只使用一个字节的存储,因此只能存储一个 ASCII 字符。它在系统目录中用作简单的枚举类型。

12-20 23:24