7
votes

Un caractère occupe-t-il 1 octet dans une base de données?

Est-ce qu'un caractère occupe 1 octet dans une base de données?

EDIT: Si je définis une colonne comme Varchar (1), cela réservera-t-il 1 ou 2 octets pour moi?


0 commentaires

4 Réponses :


4
votes

dépend de quel genre de caractère est-il. Si le type de chaîne est char / varcharide, 1 octet si UNICODE: NCHAR / NVARCHAR, alors probablement 2 octets.


0 commentaires

1
votes

Oui, si vous spécifiez la longueur du champ Char en une seule et la base de données utilise une mappage de caractères basée sur le code de code de code de codespage afin que chaque caractère soit représenté comme un octet.

Si la base de données par exemple est configurée pour utiliser UTF-8 pour stocker des caractères, chaque personnage prendra n'importe quoi de un à cinq octets en fonction de votre caractère.

Toutefois, le type de données Char est plutôt ancien, certaines bases de données peuvent réellement stocker un char (1) de la même manière qu'un varchar (1) champ. Dans ce cas, le champ aura également besoin d'une longueur, il faudra donc au moins un ou deux octets selon que c'est un espace que vous stockez dans le champ (qui sera stocké comme une chaîne vide), peut-être plus en fonction du base de données.


0 commentaires

2
votes

Cela dépend du système RDBMS et de la façon dont vous définissez la colonne. Vous pouvez certainement définir un qui ne nécessite qu'un octet de l'espace de stockage [dans SQL Server, ce serait le char (1)]. Front-hauteur pour les en-têtes de rangée, NULL Bitmasks, éventuellement indexation de la séblicité et beaucoup d'autres Cruft peuvent compliquer les choses, mais oui, vous devriez être capable de créer une colonne à un octet large.


0 commentaires

5
votes

Char (k) prend des K-octets, peu importe la valeur de la valeur, varchar (k) n + 1 octets, où n = nombre de caractères dans la valeur, mais max k + 1 octets xxx

http://dev.mysql.com/doc/refman/5.1/fr/char.html < / p>


0 commentaires