Qual è la differenza tra CHARACTER VARYING e VARCHAR in PostgreSQL?


115

John usa CHARACTER VARYINGnei luoghi in cui uso io VARCHAR. Sono un principiante, mentre lui è un esperto. Questo mi suggerisce che c'è qualcosa che non conosco.

Qual è la differenza tra CHARACTER VARYING e VARCHAR in PostgreSQL?

Risposte:


129

Varying è un alias per varchar, quindi nessuna differenza, vedere la documentazione :)

Le notazioni varchar (n) e char (n) sono alias rispettivamente per carattere variabile (n) e carattere (n). il carattere senza specificatore di lunghezza è equivalente al carattere (1). Se viene utilizzata la variazione del carattere senza specificatore di lunghezza, il tipo accetta stringhe di qualsiasi dimensione. Quest'ultima è un'estensione PostgreSQL.


9
È il contrario: varchar è un alias per la variazione. Non per essere pedante, ma è proprio lì nella tua citazione.
zerzevul

2
@zerzevul Si potrebbe non essere d'accordo con la documentazione e concordare con Charles qui, dato che varchar(n), ecc. sono gli standard ANSI e questa sintassi è peculiare di PostgreSQL.
BobRodes


4

L'unica differenza è che CHARACTER VARYING è più umano amichevole di VARCHAR


1
@joop Non ho avuto il privilegio di essere esposto a COBOL ma sono stato esposto all'inglese e penso "VARCH ARe what?" :-)
inor

8
Inoltre penso che confonda i migliori programmatori;) Sono usati per varchar
manocha_ak

3

Entrambi sono la stessa cosa ma molti database non forniscono il carattere variabile fornito principalmente da postgreSQL. Quindi per il multi database come Oracle Postgre e DB2 è bene usare Varchar


2

La risposta breve: non c'è differenza.

La risposta lunga: CHARACTER VARYINGè il nome del tipo ufficiale dallo standard ANSI SQL, che tutti i database conformi devono supportare. VARCHARè un alias più breve supportato anche da tutti i database moderni. Preferisco VARCHARperché è più breve e perché il nome più lungo sembra pedante. Tuttavia, gli strumenti postgres apprezzano pg_dumpe \dverranno visualizzati character varying.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.