postgresql - 需要解释 PostgreSQL 中的字符类型

标签 postgresql

我浏览了有关 PostgreSQL 字符类型的文档。但是我还是有一些疑问

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

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

为什么要使用character[]?

character varying 和 character varying[] 有什么区别?

最佳答案

如果您有 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)

关于postgresql - 需要解释 PostgreSQL 中的字符类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42484436/

相关文章:

sql - 条件为 "group By"的总行

Postgres 的 HTTP 触发器

postgresql - 从导致聚合条件为真的记录中获取字段值

java - 如何避免使用 PreparedStatement.setNull?

sql - 返回值交叉连接

Php postgresql 搜索查询

sql - Postgres 条件选择?

php - 使用 YAML 的 Symfony2 Doctrine 索引

postgresql - DreamFactory 2授权错误

postgresql - GCP Cloud Run 与 PostgreSQL - 如何进行迁移?