En effet, les MySQL docs spécifient que "Lorsque les valeurs CHAR sont récupérées, les espaces de fin sont supprimés." C'est étrange, car les autres bases de données semblent toujours garder le padding (je peux le confirmer pour Oracle). Le SQL-92 standard indique que les espaces correctement remplis font partie du caractère, par exemple dans la définition de la fonction CAST sur p. 148. Lorsque la source (SV = valeur de la source) et la cible (TV = valeur cible, LTD = longueur de la cible type de données), puis:
ii) If the length in characters of SV is larger than LTD, then
TV is the first LTD characters of SV. If any of the re-
maining characters of SV are non-<space> characters, then a
completion condition is raised: warning-string data, right
truncation.
iii) If the length in characters M of SV is smaller than LTD,
then TV is SV extended on the right by LTD-M <space>s.
Peut-être que juste un autre de beaucoup de MySQL oddities et gotchas.
Et pour répondre à votre question: si vous ne voulez pas les espaces de fin, vous devriez utiliser VARCHAR à la place.
vous avez peut-être raison, mais dans mysql, il semble que les champs char soient coupés. – Dan