我所知道的关于它们的差异是varchar有限制,而text不是。 文档没有提到这一点。
这真的是唯一的区别吗? 没有性能考虑等?
其背景是:旧Postgres系统使用PostQUEL语言,并使用名为text的数据types(因为有人认为这是一个存储文本types的好名字)。 然后,Postgres被转换为使用SQL作为其语言。 为了实现SQL兼容性,不是重命名texttypes,而是添加了一个新types的varchar 。 但是这两种types都在内部使用相同的C例程。
现在,在某种程度上,在某些地方, text被硬编码为默认types,以防其他情况可以被派生出来。 另外,大多数函数只能用于获取text参数或返回text 。 这两种types是二进制兼容的,所以铸造是一个微不足道的分析时间操作。 但是使用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
没有声明长度的文本。 这两种types之间没有性能差异。
看到这个类似的问题 。 jist是没有区别的,但是指定一个最大长度,比如varchar(n)通常对你不利,因为它占用更多的空间,但是不能提高性能。