Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Base de Dados SQL do Azure
Azure SQL Managed Instance
Azure Synapse Analytics
Endpoint de análise SQL no Microsoft Fabric
Armazém no Microsoft Fabric
Base de dados SQL no Microsoft Fabric
Devolve o carácter Unicode com o código inteiro especificado, conforme definido pelo padrão Unicode.
Transact-SQL convenções de sintaxe
Sintaxe
NCHAR ( integer_expression )
Arguments
integer_expression
Quando a colação da base de dados não contém a bandeira de Carácter Suplementar (SC ), trata-se de um inteiro positivo de 0 a 65535 (de 0 a 0xFFFF). Se for especificado um valor fora deste intervalo, NULL é devolvido. Para mais informações sobre caracteres suplementares, consulte Collation and Unicode Support.
Quando a colação da base de dados suporta a bandeira SC, trata-se de um inteiro positivo de 0 a 1114111 (0 a 0x10FFFF). Se for especificado um valor fora deste intervalo, NULL é devolvido.
Tipos de devolução
nchar(1) quando a colação padrão da base de dados não suporta caracteres suplementares.
nvarchar(2) quando a colação padrão da base de dados suporta caracteres suplementares.
Se o parâmetro integer_expression estiver no intervalo 0 - 0xFFFF, apenas um carácter é devolvido. Para valores superiores, o NCHAR devolve o par substituto correspondente. Não construa um par de substitutos usando NCHAR(<High surrogate>) + NCHAR(\<Low Surrogate>). Em vez disso, use uma colação de base de dados que suporte caracteres suplementares e depois especifique o ponto de código Unicode para o par substituto. O exemplo seguinte demonstra tanto o método antigo de construir um par de substituto como o método preferido para especificar o ponto de código 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));
Examples
A. Utilização do NCHAR e UNICODE
O exemplo seguinte usa as UNICODE funções e NCHAR para imprimir o UNICODE valor e o NCHAR (carácter Unicode) do segundo carácter da København cadeia de caracteres, e para imprimir o segundo carácter real, ø.
DECLARE @nstring NCHAR(8);
SET @nstring = N'København';
SELECT UNICODE(SUBSTRING(@nstring, 2, 1)),
NCHAR(UNICODE(SUBSTRING(@nstring, 2, 1)));
GO
Aqui está o conjunto de resultados.
----------- -
248 ø
(1 row(s) affected)
B. Usando SUBSTRING, UNICODE, CONVERT e NCHAR
O exemplo seguinte usa as SUBSTRINGfunções , UNICODE, CONVERT, e NCHAR para imprimir o número de caracteres, o carácter Unicode e o valor UNICODE de cada carácter na cadeia 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
Aqui está o conjunto de resultados.
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)