PostgreSQL 中的 CHARACTER VARYING 和 VARCHAR 有啥区别?

Posted

技术标签:

【中文标题】PostgreSQL 中的 CHARACTER VARYING 和 VARCHAR 有啥区别?【英文标题】:What is the difference between CHARACTER VARYING and VARCHAR in PostgreSQL?PostgreSQL 中的 CHARACTER VARYING 和 VARCHAR 有什么区别? 【发布时间】:2010-11-15 00:41:35 【问题描述】:

John 在我使用VARCHAR 的地方使用CHARACTER VARYING。 我是初学者,他是专家。 这表明我有一些我不知道的东西。

PostgreSQL中的CHARACTER VARYING和VARCHAR有什么区别?

【问题讨论】:

【参考方案1】:

VARCHARCHARACTER VARYING 的别名,所以没有区别,请参阅documentation :)

符号 varchar(n) 和 char(n) 是字符变(n)的别名 和字符(n),分别。 没有长度说明符的字符是 相当于字符(1)。如果 不使用字符变化 长度说明符,类型接受 任何大小的字符串。后者是一个 PostgreSQL 扩展。

【讨论】:

反之亦然:varchar 是varying 的别名。不要迂腐,但它就在你的报价中。 @zerzevul 鉴于varchar(n) 等是 ANSI 标准,并且这种语法是 PostgreSQL 特有的。【参考方案2】:

PostgreSQL documentation on Character Types 是一个很好的参考。它们是同一类型的两个不同名称。

【讨论】:

【参考方案3】:

唯一的区别是 CHARACTER VARYING 比 VARCHAR 更人性化

【讨论】:

@joop 我没有接触过 COBOL 的特权,但我接触过英语,我想“VARCH 是什么?” :-) 我认为这让***程序员感到困惑;)他们习惯于 varchar【参考方案4】:

简短的回答:没有区别。

长答案:CHARACTER VARYING 是 ANSI SQL 标准的官方类型名称,所有兼容的数据库都必须支持该名称。 VARCHAR 是一个较短的别名,所有现代数据库也都支持。我更喜欢VARCHAR,因为它更短,而且更长的名字让人感觉很迂腐。但是,pg_dump\d 等 postgres 工具将输出 character varying

【讨论】:

【参考方案5】:

两者是相同的,但许多数据库没有提供主要是 postgreSQL 提供的不同字符。所以对于像 Oracle Postgre 和 DB2 这样的多数据库,最好使用 Varchar

【讨论】:

以上是关于PostgreSQL 中的 CHARACTER VARYING 和 VARCHAR 有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

PostgreSQL v12.6 中的 PLpgSQL INSERT-RETURNING-INTO 错误?

POSTGRESQL中ERROR: recursive query "t" column 2 has type character varying(150) in non-rec

Tomcat v7.0 java.lang.IllegalArgumentException: Invalid character found in the request target. The v

jdbc PostgreSQL 中的偏移时间(带时区的时间)

如何使用 PostgreSQL 中的变量创建具有内部连接的视图?

postgresql中电话号码的数据类型