Le 12/05/2006 08:06, SOUCHARD Jean-Michel DSIC BI écrivait :

Bonjour et félicitations pour l'initiative!

"varchar(n) (alias de character varying) et char(n), n'ont que peu d'intérêt par rapport à text qui permet de stocker des chaînes de caractères de n'importe quelle longueur, sans pénalité, ni d'espace, ni de performance. Alors pourquoi s'ennuyer ? Seul autre type texte vraiment intéressant, char qui n'occupe qu'un byte."

Tout simplement parce que TEXT n'est pas un type SQL standard et que dans cette mesure, il vaut mieux éviter de l'utiliser, autant que faire se peut ! Il s'agit d'une implémentation propre à PostgreSql, que l'on retrouve malgré tout dans d'autres types de bases de données. VARCHAR fait partie de la norme SQL !

Donc TEXT est à éviter par :
- les puristes
- celles et ceux pour qui abandonner PG est une possibilité (et encore pour une BD où TEXT ou son équivalent n'existe pas).

Y-en-a beaucoup ?

En ce qui me concerne :
- je suis un pragmatique et recherche l'économie avant tout.
- quant à abandonner PG cela voudrait dire abandonner mon projet (ou éventuellement passer à une BD objet - et au revoir SQL).

Bonne journée,

FL


SQL permet de codifier les chaînes de caractères dans des formats où chaque caractères s'exprime sur 2 octets (ASCII, EBCDIC) ou sur 4 octets (Unicode). La longueur que tu précises, c'est la longueur utile : le nombre de caractères et non le nombre d'octets !

Mais effectivement si tu as un doute, le plus simple consiste à faire un petit test simple d'insertion/restitution (INSERT/SELECT)

Cordialement
JM Souchard

-----Message d'origine-----
De : pgsql-fr-generale-owner@postgresql.org [ mailto:pgsql-fr-generale-owner@postgresql.org ] De la part de Francis Leboutte

Envoyé : jeudi 11 mai 2006 19:19
À : liste PostgreSql FR
Objet : Re: [pgsql-fr-generale] varchar et encodage

Le 11/05/2006 16:28, claude C. écrivait :
>Bonjour,
>
>J'ai une base encodée en UTF8. J'ai défini une colonne comme varchar (30).
>D'après la documentation, le "30" indique le nombre de caractères.
>Ma question :
>Si j'entre une donnée comportant de nombreux caractères particuliers
>encodés sur plusieurs octets, est-ce que je peux toujours entrer 30
>caractères ?
>Reformulation : est-ce que 30 indiquent bien le nombre de caractères et
>non le nombre d'octets ?

Comme dit dans un courriel antérieur :

varchar(n) (alias de character varying) et char(n), n'ont que peu d'intérêt par rapport à text qui permet de stocker des chaînes de caractères de n'importe quelle longueur, sans pénalité, ni d'espace, ni de performance. Alors pourquoi s'ennuyer ? Seul autre type texte vraiment intéressant, char qui n'occupe qu'un byte.

--
Francis Leboutte
Algorithme, Rue de la Charrette 141, 4130 Tilff (Esneux), Belgique Service en informatique
   f.leboutte@algo.be
   www.algo.be
   +32-(0)4.388.3919


---------------------------(end of broadcast)---------------------------
TIP 3: Have you checked our extensive FAQ?

               http://www.postgresql.org/docs/faq