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】:VARCHAR
是CHARACTER 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 中的偏移时间(带时区的时间)