Answers:
其背景是:旧的Postgres系统使用PostQUEL语言并使用名为的数据类型text
(因为有人认为这是存储文本的类型的好名字)。然后,Postgres被转换为使用SQL作为其语言。为了实现SQL兼容性,而不是重命名该text
类型,而是varchar
添加了一个新类型。但是两种类型在内部都使用相同的C例程。
现在,在某种程度上,在某些地方,text
被硬编码为默认类型,以防万一无法导出其他任何东西。此外,大多数函数仅在接受text
参数或return时可用text
。这两种类型是二进制兼容的,因此强制转换是简单的解析时操作。但是text
总体上来说,使用对于系统而言仍然更加自然。
但是除了这些优点之外,没有明显的区别。使用对您更漂亮的那个。;-)
http://www.postgresql.org/docs/8.4/interactive/datatype-character.html
character varying(n), varchar(n) variable-length with limit
text variable unlimited length
没有声明长度的文本。这两种类型之间没有性能差异。