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

Eon*_*nil 18 postgresql database

我所知道的关于它们的差异是varchar有限的,而text不是有限的。该文件没有提及这一点。

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

Pet*_*aut 25

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

现在,在某种程度上,在某些地方,它text被硬编码为默认类型,以防无法导出其他类型。此外,大多数函数仅可用作接受text参数或返回text. 这两种类型是二进制兼容的,因此转换是一个微不足道的解析时操作。但text总体而言,使用对系统来说仍然更自然。

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