PostgreSQL 中“varchar”和“text”类型有什么区别?

PostgreSQL 中“varchar”和“text”类型有什么区别?

我所知道的关于它们的区别只是varchar有限度,而text不是无限度。文档没有提及此事。

这真的是唯一的区别吗?没有考虑性能等吗?

答案1

这件事的背景是:旧的 Postgres 系统使用 PostQUEL 语言,并使用名为 的数据类型text(因为有人认为这是存储文本类型的好名字)。然后,Postgres 被转换为使用 SQL 作为其语言。为了实现 SQL 兼容性,没有重命名该text类型,而是添加了一个新类型varchar。但这两种类型在内部都使用相同的 C 例程。

现在,在某种程度上和某些地方,text被硬编码为默认类型,以防无法派生其他类型。此外,大多数函数只能作为参数text或返回 来使用text。这两种类型是二进制兼容的,因此转换是一个简单的解析时操作。但使用text总体上对系统来说仍然更自然。

但除了这些细节之外,没有明显的区别。使用你觉得更漂亮的那个。;-)

答案2

这个类似的问题。要点是没有区别,但指定最大长度,例如varchar(n)通常不是对您有利,因为它使用了更多空间但并没有提高性能。

答案3

http://www.postgresql.org/docs/8.4/interactive/datatype-character.html

character varying(n), varchar(n)        variable-length with limit
text                                    variable unlimited length

未声明长度的文本。这两种类型之间没有性能差异。

相关内容