| Précédent | Table des matière | Suivant |
![]() | ![]() |
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 :
BLOB et TEXT pour les version de MySQL 3.23.2 ou plus récentes. Les anciennes versions ne le supporte pas.
BLOB t TEXT, contrairement aux colonnes de type VARCHAR.
BLOB and TEXT columns cannot have DEFAULT values.
BLOB t TEXT n'ont pas d'option DEFAULT.
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 :
GROUP BY ou ORDER BY sur une colonne de type BLOB ou TEXT, il faut commencer par convertir la colonne dans un type à longueur fixe. Pour cela, on utilise la fonction SUBSTRING. Par exemple :
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édent | ![]() | Suivant |