NCHAR (Transact-SQL)

Se aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

Devuelve el carácter Unicode correspondiente al código entero dado, tal como se define en el estándar Unicode.

Convenciones de sintaxis de Transact-SQL

Sintaxis

NCHAR ( integer_expression )  

Nota:

Para ver la sintaxis de Transact-SQL para SQL Server 2014 (12.x) y versiones anteriores, consulte Versiones anteriores de la documentación.

Argumentos

integer_expression
Cuando la intercalación de la base de datos no contiene la marca de carácter complementario (SC), se trata de un entero positivo de 0 a 65535 (de 0 a 0xFFFF). Si se especifica un valor fuera de este rango, se devuelve NULL. Para más información sobre el formato de caracteres, vea Compatibilidad con la intercalación y Unicode.

Cuando la intercalación de la base de datos admite la marca SC, se trata de un entero positivo de 0 a 1114111 (de 0 a 0x10FFFF). Si se especifica un valor fuera de este rango, se devuelve NULL.

Tipos de valor devueltos

nchar(1) cuando la intercalación de la base de datos predeterminada no admite caracteres complementarios.

nvarchar(2) cuando la intercalación de la base de datos predeterminada admite caracteres complementarios.

Si el parámetro integer_expression cae dentro del intervalo comprendido entre 0 y 0xFFFF, solo se devuelve un carácter. Con valores más altos, NCHAR devuelve el par suplente correspondiente. No cree un par suplente mediante NCHAR(<High surrogate>) + NCHAR(\<Low Surrogate>). En su lugar, utilice una intercalación de base de datos que admita caracteres complementarios y después especifique el punto de código Unicode para el par suplente. En el ejemplo siguiente se muestra el método antiguo de creación de un par suplente y el método preferido de especificación del punto 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));    

Ejemplos

A. Usar NCHAR y UNICODE

En el siguiente ejemplo se utilizan las funciones UNICODE y NCHAR para imprimir el valor UNICODE y NCHAR (carácter Unicode) del segundo carácter de la cadena de caracteres København, y para imprimir el 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  

El conjunto de resultados es el siguiente:

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

B. Usar SUBSTRING, UNICODE, CONVERT y NCHAR

En el siguiente ejemplo se utilizan las funciones SUBSTRING, UNICODE, CONVERT y NCHAR para imprimir el número de carácter, el carácter Unicode y el valor de UNICODE para cada uno de los caracteres de la cadena 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  

El conjunto de resultados es el siguiente:

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)  

Consulte también

ASCII (Transact-SQL)
CHAR (Transact-SQL)
UNICODE (Transact-SQL)
Tipos de datos (Transact-SQL)
String Functions (Transact-SQL) [Funciones de cadena (Transact-SQL)]