nchar y nvarchar (Transact-SQL)nchar and nvarchar (Transact-SQL)

SE APLICA A: síSQL Server (a partir de 2008) síAzure SQL Database síAzure SQL Data Warehouse síAlmacenamiento de datos paralelos APPLIES TO: yesSQL Server (starting with 2008) yesAzure SQL Database yesAzure SQL Data Warehouse yesParallel Data Warehouse

Los tipos de datos de caracteres son de longitud fija, nchar, o de longitud variable, nvarchar.Character data types that are either fixed-length, nchar, or variable-length, nvarchar. A partir de SQL Server 2012 (11.x)SQL Server 2012 (11.x), cuando se usa una intercalación con carácter complementario (SC) habilitado, estos tipos de datos almacenan el intervalo completo de datos de caracteres Unicode y usan la codificación de caracteres UTF-16.Starting with SQL Server 2012 (11.x)SQL Server 2012 (11.x), when a Supplementary Character (SC) enabled collation is used, these data types store the full range of Unicode character data and use the UTF-16 character encoding. Si se especifica una intercalación que no es de tipo SC, estos tipos de datos almacenan solo el subconjunto de datos de caracteres admitidos por la codificación de caracteres UCS-2.If a non-SC collation is specified, then these data types store only the subset of character data supported by the UCS-2 character encoding.

ArgumentosArguments

nchar [ ( n ) ]nchar [ ( n ) ]
Datos de cadena de longitud fija.Fixed-length string data. n define la longitud de la cadena en pares de bytes y debe ser un valor entre 1 y 4000.n defines the string length in byte-pairs and must be a value from 1 through 4,000. El tamaño de almacenamiento es dos veces n bytes.The storage size is two times n bytes. Para la codificación UCS-2, el tamaño de almacenamiento es el doble de n bytes y el número de caracteres que se pueden almacenar también en n.For UCS-2 encoding, the storage size is two times n bytes and the number of characters that can be stored is also n. Para la codificación UTF-16, el tamaño de almacenamiento sigue siendo el doble de n bytes, pero el número de caracteres que se pueden almacenar puede ser menor que n porque los caracteres complementarios usan dos pares de bytes (también denominados par suplente).For UTF-16 encoding, the storage size is still two times n bytes but the number of characters that can be stored may be smaller than n because Supplementary Characters use two byte-pairs (also called surrogate-pair). Los sinónimos ISO de nchar son national char y national character.The ISO synonyms for nchar are national char and national character.

nvarchar [ ( n | max ) ]nvarchar [ ( n | max ) ]
Datos de cadena de longitud variable.Variable-length string data. n define la longitud de la cadena en pares de bytes y puede ser un valor entre 1 y 4000.n defines the string length in byte-pairs and can be a value from 1 through 4,000. max indica que el tamaño máximo de almacenamiento es de 2^30-1 caracteres (2 GB).max indicates that the maximum storage size is 2^30-1 characters (2 GB). El tamaño de almacenamiento es el doble de n bytes + 2 bytes.The storage size is two times n bytes + 2 bytes. Para la codificación UCS-2, el tamaño de almacenamiento es el doble de n bytes + 2 bytes y el número de caracteres que se pueden almacenar también en n.For UCS-2 encoding, the storage size is two times n bytes + 2 bytes and the number of characters that can be stored is also n. Para la codificación UTF-16, el tamaño de almacenamiento sigue siendo el doble de n bytes + 2 bytes, pero el número de caracteres que se pueden almacenar puede ser menor que n porque los caracteres complementarios usan dos pares de bytes (también denominados par suplente).For UTF-16 encoding, the storage size is still two times n bytes + 2 bytes but the number of characters that can be stored may be smaller than n because Supplementary Characters use two byte-pairs (also called surrogate-pair). Los sinónimos ISO de nvarchar son national char varying y national character varying.The ISO synonyms for nvarchar are national char varying and national character varying.

NotasRemarks

Cuando no se especifica el argumento n en una instrucción de definición de datos o de declaración de variable, la longitud predeterminada es 1.When n is not specified in a data definition or variable declaration statement, the default length is 1. Cuando no se especifica n con la función CAST, la longitud predeterminada es 30.When n is not specified with the CAST function, the default length is 30.

Si usa nchar o nvarchar, se recomienda:If you use nchar or nvarchar, we recommend to:

  • Utilice nchar cuando los tamaños de las entradas de datos de columna sean coherentes.Use nchar when the sizes of the column data entries are consistent.
  • Use nvarchar cuando los tamaños de las entradas de datos de columna varíen considerablemente.Use nvarchar when the sizes of the column data entries vary considerably.
  • Utilice nvarchar(max) cuando los tamaños de las entradas de datos de columna varíen de forma considerable y la longitud de la cadena pueda superar los 4000 pares de bytes.Use nvarchar(max) when the sizes of the column data entries vary considerably, and the string length might exceed 4,000 byte-pairs.

sysname es un tipo de datos definido por el usuario y suministrado por el sistema que es funcionalmente equivalente a nvarchar(128), excepto que no acepta valores NULL.sysname is a system-supplied user-defined data type that is functionally equivalent to nvarchar(128), except that it is not nullable. sysname se usa para hacer referencia a nombres de objetos de base de datos.sysname is used to reference database object names.

Los objetos que usan nchar o nvarchar se asignan a la intercalación predeterminada de la base de datos, a menos que se asigne una intercalación específica por medio de la cláusula COLLATE.Objects that use nchar or nvarchar are assigned the default collation of the database unless a specific collation is assigned using the COLLATE clause.

SET ANSI_PADDING siempre es ON para nchar y nvarchar.SET ANSI_PADDING is always ON for nchar and nvarchar. SET ANSI_PADDING OFF no se aplica a los tipos de datos nchar ni nvarchar.SET ANSI_PADDING OFF does not apply to the nchar or nvarchar data types.

Prefijo de una constante de cadena de caracteres Unicode con la letra N para señalar la entrada UCS-2 o UTF-16, dependiendo de si se utiliza una intercalación SC o no.Prefix a Unicode character string constants with the letter N to signal UCS-2 or UTF-16 input, depending on whether an SC collation is used or not. Sin el prefijo N, la cadena se convierte a la página de códigos predeterminada de la base de datos que puede no reconocer determinados caracteres.Without the N prefix, the string is converted to the default code page of the database that may not recognize certain characters. A partir de Vista previa de SQL Server 2019SQL Server 2019 preview, cuando se utiliza una intercalación con UTF-8 habilitado, la página de códigos predeterminada es capaz de almacenar el juego de caracteres UNICODE UTF-8.Starting with Vista previa de SQL Server 2019SQL Server 2019 preview, when a UTF-8 enabled collation is used, the default code page is capable of storing UNICODE UTF-8 character set.

Nota

Cuando se antepone un prefijo con la letra N en una constante de cadena, la conversión implícita dará como resultado una cadena UCS-2 o UTF-16 si la constante que se convierte no supera la longitud máxima de un tipo de datos de cadena nvarchar (4000).When prefixing a string constant with the letter N, the implicit conversion will result in a UCS-2 or UTF-16 string if the constant to convert does not exceed the max length for the nvarchar string data type (4,000). En caso contrario, la conversión implícita generará un valor grande nvarchar(max).Otherwise, the implicit conversion will result in a large-value nvarchar(max).

Advertencia

Cada columna varchar(max) o nvarchar(max) cuyo valor no sea NULL requiere 24 bytes de asignación fija adicional, que se descuentan del límite de 8060 bytes de las filas durante una operación de ordenación.Each non-null varchar(max) or nvarchar(max) column requires 24 bytes of additional fixed allocation, which counts against the 8,060-byte row limit during a sort operation. Estos bytes adicionales pueden crear un límite implícito del número de columnas varchar(max) o nvarchar(max) cuyo valor no sea NULL en una tabla.These additional bytes can create an implicit limit to the number of non-null varchar(max) or nvarchar(max) columns in a table. No se produce ningún error especial cuando se crea la tabla (más allá de la advertencia habitual de que el tamaño máximo de la fila supera el máximo permitido de 8060 bytes) ni en el momento de la inserción de los datos.No special error is provided when the table is created (beyond the usual warning that the maximum row size exceeds the allowed maximum of 8,060 bytes) or at the time of data insertion. Este gran tamaño de fila puede provocar errores (como el error 512) que los usuarios no puedan prever durante algunas operaciones habituales.This large row size can cause errors (such as error 512) that users may not anticipate during some normal operations. Dos ejemplos de operaciones son las actualizaciones de la clave de índice agrupado o las ordenaciones del conjunto de columnas completo.Two examples of operations are a clustered index key update, or sorts of the full column set.

Convertir datos de caracteresConverting Character Data

Para más información sobre cómo convertir datos de caracteres, vea char y varchar (Transact-SQL).For information about converting character data, see char and varchar (Transact-SQL).

Vea tambiénSee also

ALTER TABLE (Transact-SQL)ALTER TABLE (Transact-SQL)
CAST y CONVERT (Transact-SQL)CAST and CONVERT (Transact-SQL)
COLLATE (Transact-SQL)COLLATE (Transact-SQL)
CREATE TABLE (Transact-SQL)CREATE TABLE (Transact-SQL)
Tipos de datos (Transact-SQL)Data Types (Transact-SQL)
DECLARE @local_variable (Transact-SQL)DECLARE @local_variable (Transact-SQL)
LIKE (Transact-SQL)LIKE (Transact-SQL)
SET ANSI_PADDING (Transact-SQL)SET ANSI_PADDING (Transact-SQL)
SET @local_variable (Transact-SQL) SET @local_variable (Transact-SQL)
Compatibilidad con la intercalación y Unicode Collation and Unicode Support
Juegos de caracteres de un solo byte y de varios bytesSingle-Byte and Multibyte Character Sets