Was ist der Unterschied zwischen CHARACTER VARYING und VARCHAR in PostgreSQL?

114

John benutzt CHARACTER VARYINGan den Orten, an denen ich benutze VARCHAR. Ich bin ein Anfänger, während er ein Experte ist. Dies deutet darauf hin, dass es etwas gibt, das ich nicht weiß.

Was ist der Unterschied zwischen CHARACTER VARYING und VARCHAR in PostgreSQL?

Léo Léopold Hertz 준영
quelle

Antworten:

128

Variieren ist ein Alias ​​für Varchar, also kein Unterschied, siehe Dokumentation :)

Die Notationen varchar (n) und char (n) sind Aliase für Zeichenvariationen (n) bzw. Zeichen (n). Zeichen ohne Längenangabe entspricht Zeichen (1). Wenn die Zeichenvariation ohne Längenangabe verwendet wird, akzeptiert der Typ Zeichenfolgen beliebiger Größe. Letzteres ist eine PostgreSQL-Erweiterung.

Charles Ma
quelle
9
Es ist umgekehrt: varchar ist ein Alias ​​für das Variieren. Nicht umständlich zu sein, aber es ist genau dort in Ihrem Zitat.
Zerzevul
2
@zerzevul Man könnte mit der Dokumentation nicht einverstanden sein und Charles hier zustimmen, da varchar(n)usw. die ANSI-Standards sind und diese Syntax PostgreSQL eigen ist.
BobRodes
4

Der einzige Unterschied besteht darin, dass CHARACTER VARYING menschlicher ist als VARCHAR

inor
quelle
1
@joop Ich hatte nicht das Privileg, COBOL ausgesetzt zu sein, aber ich war Englisch ausgesetzt und ich denke "VARCH ARe what?" :-)
oder
8
Außerdem denke ich, dass es Top-Programmierer verwirrt;) Sie sind es gewohnt, varchar
manocha_ak
3

Beide sind dasselbe, aber viele der Datenbanken bieten nicht das unterschiedliche Zeichen, das hauptsächlich postgreSQL bereitstellt. Für Multi-Datenbanken wie Oracle Postgre und DB2 empfiehlt es sich daher, Varchar zu verwenden

Daya Shanker
quelle
2

Die kurze Antwort: Es gibt keinen Unterschied.

Die lange Antwort CHARACTER VARYINGlautet : Der offizielle Typname aus dem ANSI-SQL-Standard, den alle kompatiblen Datenbanken unterstützen müssen. VARCHARist ein kürzerer Alias, den auch alle modernen Datenbanken unterstützen. Ich bevorzuge, VARCHARweil es kürzer ist und weil sich der längere Name pedantisch anfühlt. Postgres-Tools mögen pg_dumpund \dwerden jedoch ausgegeben character varying.

Gordon Hopper
quelle