Quelle est la différence entre CHARACTER VARYING et VARCHAR dans PostgreSQL?

115

John utilise CHARACTER VARYINGdans les endroits où j'utilise VARCHAR. Je suis un débutant, alors qu'il est un expert. Cela me suggère qu'il y a quelque chose que je ne sais pas.

Quelle est la différence entre CHARACTER VARYING et VARCHAR dans PostgreSQL?

Léo Léopold Hertz 준영
la source

Réponses:

129

Varying est un alias pour varchar, donc pas de différence, voir la documentation :)

Les notations varchar (n) et char (n) sont des alias pour les caractères variant (n) et le caractère (n), respectivement. caractère sans spécificateur de longueur équivaut à character (1). Si un caractère variant est utilisé sans spécificateur de longueur, le type accepte des chaînes de toute taille. Ce dernier est une extension PostgreSQL.

Charles Ma
la source
9
C'est l'inverse: varchar est un alias pour varier. Ne pas être pédant, mais c'est juste là dans votre citation.
zerzevul
2
@zerzevul On pourrait ne pas être d'accord avec la documentation et être d'accord avec Charles ici, étant donné que varchar(n), etc. sont les normes ANSI et que cette syntaxe est propre à PostgreSQL.
BobRodes
4

La seule différence est que CARACTER VARYING est plus convivial que VARCHAR

inor
la source
1
@joop Je n'ai pas eu le privilège d'être exposé à COBOL mais j'ai été exposé à l'anglais et je pense que "VARCH ARe what?" :-)
1er
8
A côté, je pense que c'est déroutant les meilleurs programmeurs;) Ils sont habitués à varchar
manocha_ak
3

Les deux sont la même chose mais de nombreuses bases de données ne fournissent pas les caractères variables fournis par postgreSQL. Donc, pour les bases de données multiples comme Oracle Postgre et DB2, il est bon d'utiliser le Varchar

Daya Shanker
la source
2

La réponse courte: il n'y a pas de différence.

La réponse longue: CHARACTER VARYINGest le nom de type officiel de la norme ANSI SQL, que toutes les bases de données conformes doivent prendre en charge. VARCHARest un alias plus court que toutes les bases de données modernes prennent également en charge. Je préfère VARCHARparce qu'il est plus court et que le nom plus long est pédant. Cependant, les outils postgres aiment pg_dumpet \dsortiront character varying.

Gordon Hopper
la source