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


Answers:


22

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

现在,在某种程度上,在某些地方,text被硬编码为默认类型,以防万一无法导出其他任何东西。此外,大多数函数仅在接受text参数或return时可用text。这两种类型是二进制兼容的,因此强制转换是简单的解析时操作。但是text总体上来说,使用对于系统而言仍然更加自然。

但是除了这些优点之外,没有明显的区别。使用对您更漂亮的那个。;-)


很好的解释。我将使用“文本”,因为我不关心兼容性会阻止使用特定产品的好处。谢谢!
Eonil'2

1

看到类似的问题。简而言之,没有区别,但是指定一个最大长度varchar(n)(通常不建议您这样做),因为它占用更多空间但不会提高性能。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.