2010-06-01 8 views

Répondre

0

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.

0

Je pensais que 'char' était par définition rembourré pour remplir le champ. Ils sont considérés comme étant de longueur fixe et seront rembourrés pour être de longueur fixe.

Le type de données 'varchar' est défini en tant que variable char où et non est rempli d'espace pour remplir le champ.

Je peux me tromper puisque je travaille normalement sur SQL Server.

+0

vous avez peut-être raison, mais dans mysql, il semble que les champs char soient coupés. – Dan