Jaka jest różnica między CHARACTER VARYING i VARCHAR w PostgreSQL?

115

John używa CHARACTER VARYINGw miejscach, w których ja używam VARCHAR. Jestem początkującym, a on jest ekspertem. To sugeruje mi, że jest coś, czego nie wiem.

Jaka jest różnica między CHARACTER VARYING i VARCHAR w PostgreSQL?

Léo Léopold Hertz 준영
źródło

Odpowiedzi:

129

Varying to alias dla varchar, więc bez różnicy, zobacz dokumentację :)

Notacje varchar (n) i char (n) są aliasami odpowiednio dla znaków zmiennych (n) i znaków (n). znak bez specyfikatora długości jest równoważny ze znakiem (1). Jeśli zmienne znaki są używane bez specyfikatora długości, typ akceptuje ciągi o dowolnym rozmiarze. To ostatnie jest rozszerzeniem PostgreSQL.

Charles Ma
źródło
9
Jest odwrotnie: varchar to alias do zmiennych. Nie żeby być pedantycznym, ale jest to w twoim cytacie.
zerzevul
2
@zerzevul Można nie zgodzić się z dokumentacją i zgodzić się z Charlesem tutaj, biorąc pod uwagę, że varchar(n)itp. są standardy ANSI i ta składnia jest charakterystyczna dla PostgreSQL.
BobRodes
4

Jedyną różnicą jest to, że CHARACTER VARYING jest bardziej przyjazny człowiekowi niż VARCHAR

inor
źródło
1
@joop Nie miałem przywileju bycia narażonym na COBOL, ale miałem kontakt z angielskim i myślę „VARCH ARe what?” :-)
inor
8
Obok myślę, że to jest mylące najlepszych programistów;) Są one wykorzystywane do varchar
manocha_ak
3

Obie są tym samym, ale wiele baz danych nie dostarcza różnych znaków, które zapewnia głównie PostgreSQL. Tak więc w przypadku wielu baz danych, takich jak Oracle Postgre i DB2, dobrze jest użyć Varchar

Daya Shanker
źródło
2

Krótka odpowiedź: nie ma różnicy.

Długa odpowiedź: CHARACTER VARYINGto oficjalna nazwa typu ze standardu ANSI SQL, który musi obsługiwać wszystkie zgodne bazy danych. VARCHARto krótszy alias, który obsługują również wszystkie nowoczesne bazy danych. Wolę, VARCHARponieważ jest krótszy i ponieważ dłuższa nazwa wydaje się pedantyczna. Jednak narzędzia postgres, takie jak pg_dumpi \dbędą generować pliki character varying.

Gordon Hopper
źródło