781 votes

Différence entre le texte et varchar (caractère variable)

Quelle est la différence entre le type de données text et les types de données character varying (varchar) ?

Selon la documentation

Si le character varying est utilisé sans spécificateur de longueur, le type accepte des chaînes de n'importe quelle taille. Ce dernier est une extension de PostgreSQL.

et

De plus, PostgreSQL fournit le type text, qui stocke des chaînes de n'importe quelle longueur. Bien que le type text ne soit pas inclus dans la norme SQL, plusieurs autres systèmes de gestion de base de données SQL le proposent également.

Alors quelle est la différence ?

-2voto

ofir_aghai Points 86

character varying(n), varchar(n) - (Les deux sont identiques). La valeur sera tronquée à n caractères sans lever d'erreur.

character(n), char(n) - (Les deux sont identiques). Longueur fixe et complétée avec des espaces jusqu'à atteindre la longueur définie.

text - Longueur illimitée.

Exemple :

Table test:
   a character(7)
   b varchar(7)

insert "ok    " to a
insert "ok    " to b

Nous obtenons les résultats :

a        | (a)char_length | b     | (b)char_length
----------+----------------+-------+----------------
"ok     "| 7              | "ok"  | 2

8 votes

Tandis que MySQL tronquera silencieusement les données lorsque la valeur dépasse la taille de la colonne, PostgreSQL ne le fera pas et renverra une erreur "valeur trop longue pour le type character varying(n)".

0 votes

@gsiems Ni l'un ni l'autre ne tronquera. MSSQL lancera une exception (msg 8152, niveau 16, état 30 : Chaîne de caractères ou données binaires tronquées). PostgreSQL fera de même, SAUF si le dépassement est uniquement des espaces (alors, il tronquera sans lever d'exception)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X