What is the difference between CHARACTER VARYING and VARCHAR in PostgreSQL?

John uses CHARACTER VARYING in the places where I use VARCHAR. I am a beginner, while he is an expert. This suggests me that there is something which I do not know.

What is the difference between CHARACTER VARYING and VARCHAR in PostgreSQL?

139899 次浏览

VARCHARCHARACTER VARYING的别名,所以没有区别,参见 文件:)

表示法 varchar(n)char(n)分别是 character varying(n)character(n)的别名。没有长度说明符的 character相当于 character(1)。如果使用的 character varying没有长度说明符,则该类型接受任何大小的字符串。后者是 PostgreSQL 扩展。

注意大写: PostgreSQL 文档使用全小写样式化: character varying。相比之下,官方 SQL 标准在其1000个页面中使用了全部大写的样式化: CHARACTER VARYING

关于字符类型的 PostgreSQL 文档是一个很好的参考,它们是同一类型的两个不同名称。

唯一的区别是,CHARACTER VARYINGVARCHAR更人性化

两者是相同的,但是许多数据库没有提供主要由 postgreSQL 提供的可变字符。因此,对于 OraclePostgre 和 DB2这样的多数据库来说,最好使用 Vchar

简短的回答是: 没有区别。

答案很长: CHARACTER VARYING是 ANSI SQL 标准中的正式类型名,所有兼容的数据库都必须支持它。(符合 SQL 的特性 ID E021-02)

VARCHAR是所有现代数据库都支持的较短别名。我更喜欢 VARCHAR,因为它更短,因为较长的名称感觉迂腐。然而,postgres 工具,如 pg_dump\d将输出 character varying