PostgreSQL字符长度限制

时间:2010-05-25 13:24:15

标签: database postgresql

我在PostgreSQL中使用字符变化的数据类型。 我无法在PostgreSQL手册中找到这些信息。 字符变化数据类型中字符的最大限制是多少?

4 个答案:

答案 0 :(得分:21)

参考documentationvarchar(n)类型定义没有明确的限制。但是:

  

...
  无论如何,最长的可能   可以存储的字符串是   大约1 GB。 (最大值   将允许数据类型中的 n   声明不到那个。它   改变这个并不是很有用   因为有多字节字符   编码字符数和   无论如何,字节可能完全不同。   如果你想存储长串   如果没有特定的上限,请使用文字   或字符变化没有长度   说明者,而不是编造   任意长度限制。)

另请注意:

  

提示:没有表现   这三种类型的区别,   除了增加存储空间   当使用空白填充类型时,和   一些额外的CPU周期来检查   存入时的长度   长度受限的列。而   character(n)有表现力   其他一些数据库的优势   系统,没有这样的优势   PostgreSQL的;事实上,字符(n)是   通常是三个中最慢的   因为它的额外存储空间   成本。在大多数情况下文本或   应该使用变化的字符   代替。

答案 1 :(得分:1)

来自documentation

  

在任何情况下,可存储的最长字符串大约为1 GB。

答案 2 :(得分:0)

postgresql中的字符类型

  • 字符变化(n),varchar(n)=可变长度,带限制
  • character(n),char(n)=固定长度,空白填充
  • text = variable unlimited length

根据您的问题,我建议您使用文字类型。该类型不需要字符长度。

  

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

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

答案 3 :(得分:0)

最大字符串大小约为 1 GB 。根据Postgres docs

  

非常长的值也存储在后台表中,以免干扰快速访问较短的列值。在任何情况下,可以存储的最长字符串约为1 GB。 (数据类型声明中的 n 所允许的最大值小于该值。)

请注意,您可以为varchar指定的最大 n 小于最大存储大小。尽管此限制可能有所不同,但快速检查发现postgres 11.2的限制为 10 MB

psql (11.2)

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

实际上,当您没有合理的长度限制时,suggested是您仅使用varchar而没有指定一个。根据官方文档,

  

如果要存储没有特定上限的长字符串,请使用不带长度说明符的文本或字符变化,而不是设置任意长度限制。