[MySQL] Différence entre varchar nvarchar

Fermé
Dumbo - 3 juin 2009 à 11:56
 bredsky - 17 mai 2010 à 12:16
Bonjour tout le monde,

J'ai fait quelques recherches et j'ai vu que la différence entre ces deux types de données était leur jeu de caractères. Varchar est un type de données NON UNICODE contrairement à nvarchar qui est UNICODE.
De plus, avec le type de données nvarchar, un caractère est stocké sur 2 octets (1 octet pour varchar).

Donc au final, nvarchar pourra stocker 2 fois moins de caractères que varchar.

Ai-je bien tout compris ? Ou j'ai oublié quelques détails important ?
A voir également:

4 réponses

dam75 Messages postés 1041 Date d'inscription lundi 4 mai 2009 Statut Webmaster Dernière intervention 21 février 2023 67
3 juin 2009 à 12:59
Bonjour,

Alternate : ca n'est pas tout à fait cela, en fait, par défaut, MySQL accepte une entrée de 200 caractères dans un VARCHAR(50) MAIS il la tronque à 50 caractères ...
C'est donc dangereux, parce que on croit que tout s'est bien passé (il n'y a ni erreur ni warning), MAIS on a perdu 150 caractères :)
Cela peut se configurer dans le my.cnf (strict sql mode), mais c'est très rarement en place ...
Voir la documentation : https://dev.mysql.com/doc/refman/8.0/en/char.html

Dumbo : NVARCHAR n'existe pas en tant que type de données dans MySQL ... par contre, cela existe sur SQL Server ... confusion ? :)
Du coup, elle peut exister également dans certaines couches d'abstraction (JDBC, ...) : MySQL l'assimilera alors aux VARCHAR.

Bon courage
3
Oui j'ai me suis trompé dans mon explication :)

En fait, mon soucis, c'est que lorsque je migre ma base SQL Server vers MySQL par l'intermédiaire de l'outil MySQL Migration Toolkit, les données en nvarchar contenant des accents ont bien migré mais celles en varchar (avec des accents) posent un problème. Donc la solution que j'ai trouvé, changer le type de données varchar en nvarchar ...

C'est pour cela qu'avant je souhaite vérifier si cela ne peut entraîner aucune erreur.
0