NCHAR (Transact-SQL)

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

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

Conventions de la syntaxe Transact-SQL

Syntaxe

NCHAR ( integer_expression )  

Remarque

Pour afficher la syntaxe Transact-SQL pour SQL Server 2014 (12.x) et versions antérieures, consultez la Documentation sur les versions antérieures.

Arguments

integer_expression
Lorsque le classement de la base de données ne contient pas l'indicateur Caractère supplémentaire (SC), c'est un entier positif de 0 à 65 535 (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 la base de données prend en charge l'indicateur SC, c'est un entier positif de 0 à 1 114 111 (0 à 0x10FFFF). Si une valeur à l'extérieur de cette plage est spécifiée, NULL est retourné.

Types de retour

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 renvoyé. 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

R. 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 le jeu de résultats obtenu.

----------- -   
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 le jeu de résultats obtenu.

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

ASCII (Transact-SQL)
CHAR (Transact-SQL)
UNICODE (Transact-SQL)
Types de données (Transact-SQL)
Fonctions de chaîne (Transact-SQL)