Caractères supplémentaires

Les chaînes nchar et nvarchar stockent chaque caractère sous forme d'une valeur 16 bits dans un codage appelé UCS-2. Ce codage, défini pour les versions Unicode antérieures à 1996, prend en charge des caractères dans la plage U+0000 à U+FFFF. Les versions plus récentes d'Unicode ont défini d'autres caractères dans la plage U+10000 à U+10FFFF appelés caractères supplémentaires . Ces caractères sont stockés comme des paires de valeurs 16 bits, appelées paires de substitution, dans un encodage UTF-16. Tous les nouveaux classements de niveau _100 prennent en charge le tri linguistique avec les caractères supplémentaires.

Si vous utilisez des caractères supplémentaires, tenez compte des contraintes suivantes :

  • Les caractères supplémentaires ne peuvent être utilisés dans des opérations de tri et de comparaison que sur les versions de classement 90 ou versions supérieures.

  • Étant donné que les caractères supplémentaires sont stockés sous la forme de valeurs 16 bits, la fonction LEN() retourne la valeur 2 pour chaque caractère supplémentaire contenu dans la chaîne d'arguments. De même, les fonctions CHARINDEX et PATINDEX interprètent mal l'occurrence des caractères supplémentaires dans les chaînes de caractères.

  • Les fonctions LEFT, RIGHT, SUBSTRING, STUFF et REVERSE peuvent fractionner toute paire de caractères de substitution et produire des résultats inattendus.

  • Les caractères supplémentaires ne sont pas utilisables avec les caractères génériques suivants : trait de soulignement (_), pourcentage (%) et signe insertion (^).

  • Les caractères supplémentaires ne sont pas utilisables dans les métadonnées, telles que les noms d'objets de base de données.