PrécédentTable des matière Suivant
 

7.2.7.2 Les types BLOB et TEXT

Un BLOB est un binary long object, c'est à dire un objet binaire long, qui peut contenir une certaine quantité d'information. Les quatre types TINYBLOB, BLOB, MEDIUMBLOB et LONGBLOB ne diffèrent que par leur taille maximum. Voir Confère section 7.2.1 Tailles nécessaires pour le stockage de types de colonnes.

Les quatre types TINYTEXT, TEXT, MEDIUMTEXT t LONGTEXT correspondent aux quatre types BLOB et ont les mêmes tailles maximum, et les mêmes conditions de stockage. La seule différence entre les types BLOB et TEXT tient aux tris et aux comparaisons : les tris et comparaisons tiennent compte de la casse, dans le cas des TEXT, et n'en tiennent pas compte, dans le cas des BLOB. En d'autres termes, un TEXT est un BLOB insensible à la casse.

Lors de l'affectation d'une valeur de type BLOB ou TEXT dans une colonne trop petite, la valeur est tronquée à la taille de la colonne.

En général, on peut considérer qu'une colonne de type TEXT est une colonne de type VARCHAR, aussi grande que désiré. De la même manière, on peut considérer qu'une colonne de type BLOB est une colonne de type VARCHAR BINARY, aussi grande que possible. Les différences sont :

MyODBC utilise le type LONGVARBINARY pour le type BLOB et LONGVARBINARY pour TEXT.

Parce que les types peuvent être extrêmement grands, il y a certaines contraintes à leur utilisation :

mysql> SELECT commentaires FROM Nom_table , SUBSTRING(commentaires,20) as souschaîne ORDER BY souschaîne;

Si SUBSTRING n'est pas utilisé, le tri portera uniquement sur les max_sort_longueur premiers octets de la colonne. Par défaut, max_sort_longueur vaut 1024, et cette valeur peut être changée en utilisant l'option , lors du démarrage de MySQL. Il est possible d'utiliser la clause GROUP sur un BLOB or TEXT , en spécifiant la position de la colonne, et en utilisant un alias. Par exemple :

mysql> select id,substring(blob_col,1,100) FROM Nom_table
           GROUP BY 2;
mysql> select id,substring(blob_col,1,100) as b FROM Nom_table
           GROUP BY b;

Il faut bien noter que chaque valeur de type est représentée de manière interne par un objet alloué. Contrairement aux autres objets, pour qui l'espace mémoire est réservé à la création de la table.

Table des matières
PrécédentNexen.netSuivant