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