NCHAR (Transact-SQL)

Renvoie le caractère Unicode correspondant à un code entier spécifié, tel que défini dans les normes Unicode.

Icône Lien de rubrique Conventions de la syntaxe Transact-SQL

Syntaxe

NCHAR ( integer_expression )

Arguments

  • integer_expression
    Lorsque le classement de la base de données ne contient pas d'indicateur de caractère supplémentaire (SC) , il s'agit d'un nombre entier positif compris entre 0 et 65535 (0 à 0xFFFF). Si une valeur à l'extérieur de cette plage est spécifiée, NULL est retourné. Pour plus d'informations sur les caractères supplémentaires, consultez Prise en charge d'Unicode et du classement.

    Lorsque le classement de base de données prend en charge l'indicateur de caractère supplémentaire (SC), c'est un nombre entier positif compris entre 0 et 1114111 (0 à 0x10FFFF). Si une valeur à l'extérieur de cette plage est spécifiée, NULL est retourné.

Types des valeurs retournées

nchar(1) lorsque le classement de base de données par défaut ne prend pas en charge les caractères supplémentaires.

nvarchar(2) lorsque le classement de base de données par défaut prend en charge les caractères supplémentaires.

Si le paramètre integer_expression se trouve dans la plage 0 - 0xFFFF, un seul caractère est retourné. Pour les valeurs plus élevées, NCHAR retourne la paire de substitution correspondante. Ne construisez pas de paire de substitution à l'aide de NCHAR(<High surrogate>) + NCHAR(<Low Surrogate>). À la place, utilisez un classement de base de données qui prend en charge les caractères supplémentaires, puis spécifiez le point de code Unicode pour la paire de substitution. L'exemple suivant illustre la méthode classique de construction d'une paire de substitution et la méthode recommandée pour spécifier le point de code Unicode.

CREATE DATABASE test COLLATE Finnish_Swedish_100_CS_AS_SC;
DECLARE @d nvarchar(10) = N'ㅿ'; 
-– Old style method.
SELECT NCHAR(0xD84C) + NCHAR(0xDD7F); 

-- Preferred method. 
SELECT NCHAR(143743); 

-- Alternative preferred method.
SELECT NCHAR(UNICODE(@d));  

Exemples

A.Utilisation de NCHAR et UNICODE

Cet exemple fait appel aux fonctions UNICODE et NCHAR pour imprimer la valeur UNICODE et le caractère Unicode NCHAR du deuxième caractère de la chaîne de caractères København de façon à imprimer correctement celui-ci, soit ø.

DECLARE @nstring nchar(8);
SET @nstring = N'København';
SELECT UNICODE(SUBSTRING(@nstring, 2, 1)), 
   NCHAR(UNICODE(SUBSTRING(@nstring, 2, 1)));
GO

Voici l'ensemble des résultats.

----------- - 
248         ø
(1 row(s) affected)

B.Utilisation de SUBSTRING, UNICODE, CONVERT et NCHAR

Cet exemple fait appel aux fonctions SUBSTRING, UNICODE, CONVERT et NCHAR pour imprimer le nombre de caractères, le caractère Unicode et la valeur UNICODE de chacun des caractères de la chaîne København.

-- The @position variable holds the position of the character currently
-- being processed. The @nstring variable is the Unicode character 
-- string to process.
DECLARE @position int, @nstring nchar(9);
-- Initialize the current position variable to the first character in 
-- the string.
SET @position = 1;
-- Initialize the character string variable to the string to process.
-- Notice that there is an N before the start of the string. This 
-- indicates that the data following the N is Unicode data.
SET @nstring = N'København';
-- Print the character number of the position of the string you are at, 
-- the actual Unicode character you are processing, and the UNICODE 
-- value for this particular character.
PRINT 'Character #' + ' ' + 'Unicode Character' + ' ' + 'UNICODE Value';
WHILE @position <= DATALENGTH(@nstring)
   BEGIN
   SELECT @position, 
      NCHAR(UNICODE(SUBSTRING(@nstring, @position, 1))),
      CONVERT(NCHAR(17), SUBSTRING(@nstring, @position, 1)),
      UNICODE(SUBSTRING(@nstring, @position, 1))
   SELECT @position = @position + 1
   END;
GO

Voici l'ensemble des résultats.

Character # Unicode Character UNICODE Value
                                               
----------- ---- ----------------- ----------- 
1           K    K                 75

(1 row(s) affected)

                                               
----------- ---- ----------------- ----------- 
2           ø    ø                 248

(1 row(s) affected)

                                               
----------- ---- ----------------- ----------- 
3           b    b                 98

(1 row(s) affected)

                                               
----------- ---- ----------------- ----------- 
4           e    e                 101

(1 row(s) affected)

                                               
----------- ---- ----------------- ----------- 
5           n    n                 110

(1 row(s) affected)

                                               
----------- ---- ----------------- ----------- 
6           h    h                 104

(1 row(s) affected)

                                               
----------- ---- ----------------- ----------- 
7           a    a                 97

(1 row(s) affected)

                                               
----------- ---- ----------------- ----------- 
8           v    v                 118

(1 row(s) affected)

                                               
----------- ---- ----------------- ----------- 
9           n    n                 110

(1 row(s) affected)

                                               
----------- ---- ----------------- ----------- 
10          NULL                   NULL

(1 row(s) affected)

                                               
----------- ---- ----------------- ----------- 
11          NULL                   NULL

(1 row(s) affected)

                                               
----------- ---- ----------------- ----------- 
12          NULL                   NULL

(1 row(s) affected)

                                               
----------- ---- ----------------- ----------- 
13          NULL                   NULL

(1 row(s) affected)

                                               
----------- ---- ----------------- ----------- 
14          NULL                   NULL

(1 row(s) affected)

                                               
----------- ---- ----------------- ----------- 
15          NULL                   NULL

(1 row(s) affected)

                                               
----------- ---- ----------------- ----------- 
16          NULL                   NULL

(1 row(s) affected)

                                               
----------- ---- ----------------- ----------- 
17          NULL                   NULL

(1 row(s) affected)

                                               
----------- ---- ----------------- ----------- 
18          NULL                   NULL

(1 row(s) affected)

Voir aussi

Référence

Types de données (Transact-SQL)

Fonctions de chaîne (Transact-SQL)

UNICODE (Transact-SQL)