Qual é a diferença entre CHARACTER VARYING e VARCHAR no PostgreSQL?


115

John usa CHARACTER VARYINGnos lugares onde eu uso VARCHAR. Eu sou um iniciante, enquanto ele é um especialista. Isso me sugere que há algo que eu não sei.

Qual é a diferença entre CHARACTER VARYING e VARCHAR no PostgreSQL?

Respostas:


129

Varying é um apelido para varchar, portanto, não há diferença, consulte a documentação :)

As notações varchar (n) e char (n) são apelidos para character Variaing (n) e character (n), respectivamente. caractere sem especificador de comprimento é equivalente a caractere (1). Se a variação de caractere for usada sem especificador de comprimento, o tipo aceita strings de qualquer tamanho. O último é uma extensão do PostgreSQL.


9
É o contrário: varchar é um apelido para variar. Não quero ser pedante, mas está aí na sua citação.
zerzevul

2
@zerzevul Pode-se discordar da documentação e concordar com Charles aqui, visto que varchar(n), etc. são os padrões ANSI e esta sintaxe é peculiar ao PostgreSQL.
BobRodes


4

A única diferença é que CHARACTER VARYING é mais amigável do que VARCHAR


1
@joop Não tive o privilégio de ser exposto ao COBOL, mas fui exposto ao inglês e acho que "VARCH ARe what?" :-)
1º de

8
Além disso, acho que confunde os principais programadores;) Eles estão acostumados a varchar
manocha_ak

3

Ambos são a mesma coisa, mas muitos dos bancos de dados não estão fornecendo os caracteres variáveis ​​que o postgreSQL fornece. Portanto, para bancos de dados múltiplos como Oracle Postgre e DB2, é bom usar o Varchar


2

A resposta curta: não há diferença.

A resposta longa: CHARACTER VARYINGé o nome de tipo oficial do padrão ANSI SQL, que todos os bancos de dados compatíveis devem oferecer suporte. VARCHARé um apelido mais curto que todos os bancos de dados modernos também suportam. Prefiro VARCHARporque é mais curto e porque o nome mais longo parece pedante. No entanto, as ferramentas do postgres gostam pg_dumpe \dproduzirão character varying.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.