代码之家  ›  专栏  ›  技术社区  ›  Anton

PostgreSQL字符可变长度限制

  •  22
  • Anton  · 技术社区  · 16 年前

    我在PostgreSQL中使用字符变化数据类型。 字符变化数据类型中字符的最大限制是多少?

    3 回复  |  直到 16 年前
        1
  •  27
  •   Frank Bollack    16 年前

    指 documentation ,没有为 varchar(n) 类型定义。但是:

    ...
    大约1GB(最大值 将允许 n 在数据类型中 改变这一点没什么用 编码字符数和 不管怎样,字节可以完全不同。 如果没有特定的上限,请使用文本 或无长度变化的字符 任意长度限制。)

    提示: 没有表演 这三种类型的区别, 除了增加存储空间 当使用空白填充类型时, 一些额外的CPU周期来检查 储存在容器中时的长度 长度约束列。而 字符(n)有性能 系统中,没有这样的优势 PostgreSQL;事实上,字符(n)是 通常是三个中最慢的 因为它有额外的存储空间 应使用字符 相反。

        2
  •  3
  •   Quassnoi    16 年前
        3
  •  2
  •   Johan    8 年前

    • 字符可变(n),varchar(n)=带限制的可变长度
    • 文本=可变长度

    基于你的问题,我建议你用打字机

    此外,PostgreSQL还提供 文本 类型,它存储任意长度的字符串。虽然类型文本不在SQL标准中,但是其他一些SQL数据库管理系统也有它。

    https://www.postgresql.org/docs/9.6/static/datatype-character.html

        4
  •  1
  •   Brad Koch Daniel Wright    7 年前

    1 GB . 根据postgres docs :

    n

    请注意,最大 您可以指定varchar小于最大存储大小。虽然这一限制可能有所不同,但快速检查后发现,postgres 11.2的限制是有限的 :

    psql (11.2)
    
    => create table varchar_test (name varchar(1073741824));
    ERROR:  length for type varchar cannot exceed 10485760
    

    实际上,当你没有一个合理的长度限制时,它是 suggested 你可以简单的使用 varchar

    如果希望存储没有特定上限的长字符串,请使用不带长度说明符的文本或字符变量,而不是构成任意长度限制。