John在我使用VARCHAR
的地方使用CHARACTER VARYING
。
我是初学者,而他是专家,这表明我不知道某些东西。
在PostgreSQL中,CHARACTER VARYING和VARCHAR有什么区别?
John在我使用VARCHAR
的地方使用CHARACTER VARYING
。
我是初学者,而他是专家,这表明我不知道某些东西。
在PostgreSQL中,CHARACTER VARYING和VARCHAR有什么区别?
VARCHAR
是CHARACTER VARYING
的别名,因此没有区别,可以参考文档:)
符号
varchar(n)
和char(n)
分别是character varying(n)
和character(n)
的别名。不带长度说明符的character
相当于character(1)
。如果使用不带长度说明符的character varying
,则该类型接受任何大小的字符串。后者是PostgreSQL扩展功能。
关于大写字母的注意事项:PostgreSQL文档使用全部小写的字母风格:character varying
。相比之下,官方的SQL标准在其1000页中始终使用全部大写字母的字母风格:CHARACTER VARYING
。
varchar(n)
等语法是 ANSI 标准,而这种语法在 PostgreSQL 中很奇特,因此有人可能会不同意文档并赞同 Charles 的说法。 - BobRodes简短回答:没有区别。
详细回答:CHARACTER VARYING
是ANSI SQL标准中的正式类型名称,所有符合标准的数据库都必须支持它。(SQL兼容性特性ID E021-02)。
VARCHAR
是一个更短的别名,在现代数据库中也被支持。我更喜欢使用VARCHAR
,因为它更简洁,而且长名称感觉太学究了。然而,像pg_dump
和\d
这样的postgres工具将输出character varying
。
CHARACTER VARYING
比VARCHAR
更加人性化。两者是同一件事,但许多数据库并没有提供变长字符类型,主要是PostgreSQL提供了这种类型。因此,对于像Oracle、Postgre和DB2等多数据库的情况来说,使用Varchar是比较好的选择。