NCHAR (Transact-SQL)
S’applique à : SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics 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)