Ainsi que CHAR
(CHARACTER)
y VARCHAR
(CHARACTER VARYING)
SQL offre une NCHAR
(NATIONAL CHARACTER)
y NVARCHAR
(NATIONAL CHARACTER VARYING)
type. Dans certaines bases de données, il s'agit du meilleur type de données à utiliser pour les chaînes de caractères (non binaires) :
-
Dans SQL Server,
NCHAR
est stocké en UTF-16LE et constitue le seul moyen de stocker de manière fiable les caractères non ASCII,CHAR
étant une page de code à un seul octet seulement ; -
Dans Oracle,
NVARCHAR
peuvent être stockées en UTF-16 ou UTF-8 plutôt qu'en collation à un seul octet ; -
Mais dans MySQL,
NVARCHAR
esVARCHAR
Les deux types peuvent être stockés avec UTF-8 ou toute autre collation.
Alors, que fait NATIONAL
signifie-t-il réellement sur le plan conceptuel, le cas échéant ? Les documents des fournisseurs ne vous informent que sur les jeux de caractères utilisés par leurs propres SGBD, et non sur leur raison d'être. Par ailleurs, la norme SQL92 explique cette fonctionnalité de manière encore moins utile, en indiquant seulement que NATIONAL CHARACTER
est stocké dans un jeu de caractères défini par l'implémentation. Contrairement à un simple CHARACTER
qui est stocké dans un jeu de caractères défini par l'implémentation. Qui peut être un jeu de caractères différent défini par l'implémentation. Ou pas.
Merci, ANSI. Thansi.
Faut-il utiliser NVARCHAR
pour le stockage de tous les caractères (non binaires) ? Existe-t-il des SGBDs actuellement populaires dans lesquels cela fera quelque chose d'indésirable, ou qui ne reconnaissent tout simplement pas le mot-clé (ou l'expression N''
littéraux) ?
4 votes
Le serveur SQL stocke NVARCHAR en encodage UCS-2, et non en UTF-16 : msdn.microsoft.com/fr/us/library/
1 votes
@bobince, Que signifie "Thansi" ?
5 votes
J'espère que cela vous aidera.