需要解释PostgreSQL

时间:2017-02-27 11:16:51

标签: postgresql

我浏览了有关PostgreSQL字符类型的文档。但我仍然有一些问题

“char”是固定长度i,e 1 如果是这样什么是“char []”的长度因为我无法在pgadmin中更改它我认为它用于可变长度字符数组。那么,实际的默认大小是多少?

与“char”[]相比,字符的用途是什么?现在我假设字符用于我们定义大小的固定长度字符数组。

为什么使用character []?

字符变化和字符变化有什么区别[]?

1 个答案:

答案 0 :(得分:5)

如果你来自C背景,PostgreSQL中的字符串类型不是一个字符数组。

对于PostgreSQL中的每个类型foo,都有一个对应的数组类型foo[],表示类型foo的值数组。仅当您不打算在数据库中操作它们时才使用数组类型;如果你这样做,通常最好将数组规范化为一个单独的表。

不考虑数组类型,有不同的字符类型:

  • "char"(需要双引号):单个字符。主要用于目录表。除非你知道自己在做什么,否则不要使用这种类型。

  • character(n)char(n):固定长度的字符串。无论你在那里存放什么,它总是在右侧填充空格。根据SQL标准的规定,这种行为有时令人惊讶,所以你很少想要这种类型。

  • text:任意长度的字符串。除非您希望数据库强加长度限制,否则这是字符串所需的类型。

  • character varying(n)varchar(n):这与text相同,但有额外的长度限制。

用一个例子将其四舍五入:

CREATE TABLE strtest(
   id serial PRIMARY KEY,
   sc "char",
   c character(10),
   vc character varying(10),
   vca character varying(10)[]
);

INSERT INTO strtest (sc, c, vc, vca)
   VALUES (
      'x',
      'short',
      'short',
      ARRAY['short1', 'short2', 'short3']
   );

SELECT sc, c, vc, vca[2] FROM strtest;
 sc |     c      |  vc   |  vca
----+------------+-------+--------
 x  | short      | short | short2
(1 row)