Documentation PostgreSQL 7.4.29 | ||||
---|---|---|---|---|
Pr�c�dent | Arri�re rapide | Chapitre 8. Types de donn�es | Avance rapide | Suivant |
Tableau 8-4. Types caract�res
Nom | Description |
---|---|
character varying(n), varchar(n) | Longueur variable avec limite |
character(n), char(n) | longueur fixe, combl� avec des espaces |
text | longueur variable illimit�e |
Tableau 8-4 montre les types g�n�riques disponibles dans PostgreSQL.
SQL d�finit deux types de caract�res principaux: character varying(n) et character(n), o� n est un entier positif. Ces deux types peuvent stocker des cha�nes de caract�res de taille inf�rieure ou �gale � n. Une tentative d'ins�rer une cha�ne trop longue donnera une erreur, � moins que les caract�res en trop soient tous des espaces, auquel cas la cha�ne sera tronqu�e � la taille maximale. (Cette exception un rien �trange est impos�e par la norme SQL). Si la cha�ne � stocker est plus petite que la taille d�clar�e, elle sera compl�t�e par des espaces pour le type character, et elle sera stock�e telle quelle pour le type character varying.
Si vous transtypez (cast) explicitement une valeur en character varying(n) ou en character(n), alors une cha�ne trop longue sera tronqu�e � n caract�res sans que cela g�n�re d'erreur. (Ce comportement est aussi impos� par la norme SQL.)
Note�: Avant PostgreSQL 7.2, les cha�nes trop longues �taient toujours tronqu�es sans g�n�rer d'erreur, que ce soit par une transformation explicite ou implicite.
Les notations varchar(n) et char(n) sont des alias pour character varying(n) et character(n), respectivement. character sans indication de taille est �quivalent � character(1). Si character varying est utilis� sans indicateur de taille, le type accepte des cha�nes de toutes tailles. Il s'agit l� d'une sp�cificit� de PostgreSQL.
PostgreSQL propose aussi le type text, qui permet de stocker des cha�nes de n'importe quelle taille. Bien que le type text ne soit pas dans le standard SQL, plusieurs autres syst�mes de gestion de bases de donn�es SQL le proposent aussi.
L'espace de stockage utilis� pour les donn�es de ces types est de 4 octets en plus de la taille de la cha�ne, plus le remplissage dans le cas du type character. Les grandes cha�nes sont automatiquement compress�es par le syst�me, si bien que l'espace effectivement utilis� peut �tre inf�rieur. Les grandes cha�nes sont aussi stock�es dans des tables d'arri�re plan, afin de ne pas ralentir l'acc�s aux autres colonnes plus petites. Dans tous les cas, la taille maximale possible pour une cha�ne de caract�res est de l'ordre 1 Go. (La taille maximale pour n dans la d�claration de type est plus petite que cela. Il ne serait pas tr�s utile de le changer parce qu'avec l'encodage des caract�res sur plusieurs octets, le nombre de caract�res et d'octets peuvent �tre tr�s diff�rents. Si vous voulez stocker de longues cha�nes sans limite de taille sp�cifique, utilisez le type text ou le type character varying sans indiquer de taille, plut�t que d'indiquer une limite de taille arbitraire.)
Astuce�: Il n'y a pas de diff�rence de performance entre ces trois types, � part la place disque suppl�mentaire pour le type qui remplit les vides avec des espaces.
Voyez Section 4.1.2.1 pour avoir plus d'informations sur la syntaxe des litt�raux de cha�nes, et Chapitre 9 pour avoir des informations sur les op�rateurs et les fonctions.
Exemple 8-1. Utilisation des types caract�res
CREATE TABLE test1 (a character(4)); INSERT INTO test1 VALUES ('ok'); SELECT a, char_length(a) FROM test1; -- (1) a | char_length ------+------------- ok | 4 CREATE TABLE test2 (b varchar(5)); INSERT INTO test2 VALUES ('ok'); INSERT INTO test2 VALUES ('bien '); INSERT INTO test2 VALUES ('trop long'); ERROR: value too long for type character varying(5) INSERT INTO test2 VALUES ('trop long'::varchar(5)); -- troncature explicite SELECT b, char_length(b) FROM test2; b | char_length -------+------------- ok | 2 bien | 5 trop | 5
char_length
est d�crite dans
Section 9.4.
Il y a deux autres types caract�res de taille constante dans PostgreSQL, d�crits dans Tableau 8-5. Le type name existe seulement pour le stockage des identifiants dans les catalogues syst�mes, et n'est pas destin� � �tre utilis� par les utilisateurs normaux. Sa taille est actuellement d�finie � 64 octets (63 utilisables plus le terminateur), mais doit �tre r�f�renc�e en utilisant la constante NAMEDATALEN. La taille est d�finie � la compilation (et est donc ajustable pour des besoins particuliers). La taille maximale par d�faut pourrait changer dans une prochaine version. Le type "char" (notez les guillemets) est diff�rent de char(1) car il n'utilise qu'un seul octet de stockage. Il est utilis� dans les catalogues syst�mes comme un type d'�num�ration �conomique.
Pr�c�dent | Sommaire | Suivant |
Types mon�taires | Niveau sup�rieur | Types de donn�es binaires |