我在PostgreSQL中使用字符变化的数据类型。 我无法在PostgreSQL手册中找到这些信息。 字符变化数据类型中字符的最大限制是多少?
答案 0 :(得分:21)
参考documentation,varchar(n)
类型定义没有明确的限制。但是:
...
无论如何,最长的可能 可以存储的字符串是 大约1 GB。 (最大值 将允许数据类型中的n
声明不到那个。它 改变这个并不是很有用 因为有多字节字符 编码字符数和 无论如何,字节可能完全不同。 如果你想存储长串 如果没有特定的上限,请使用文字 或字符变化没有长度 说明者,而不是编造 任意长度限制。)
另请注意:
提示:没有表现 这三种类型的区别, 除了增加存储空间 当使用空白填充类型时,和 一些额外的CPU周期来检查 存入时的长度 长度受限的列。而 character(n)有表现力 其他一些数据库的优势 系统,没有这样的优势 PostgreSQL的;事实上,字符(n)是 通常是三个中最慢的 因为它的额外存储空间 成本。在大多数情况下文本或 应该使用变化的字符 代替。
答案 1 :(得分:1)
在任何情况下,可存储的最长字符串大约为1 GB。
答案 2 :(得分:0)
postgresql中的字符类型
根据您的问题,我建议您使用文字类型。该类型不需要字符长度。
此外,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
而没有指定一个。根据官方文档,
如果要存储没有特定上限的长字符串,请使用不带长度说明符的文本或字符变化,而不是设置任意长度限制。