
Resumen: en este tutorial, aprenderás a usar el tipo de datos NVARCHAR
de SQL Server para almacenar datos de cadenas Unicode de longitud variable.
Introducción al tipo de datos NVARCHAR de SQL Server
El tipo de datos NVARCHAR de SQL Server se utiliza para almacenar datos de cadenas Unicode de longitud variable. A continuación se muestra la sintaxis de NVARCHAR
:
NVARCHAR(n)
En esta sintaxis, n define la longitud de la cadena que va de 1 a 4000. Si no se especifica la longitud de la cadena, su valor predeterminado es 1.
Otra forma de declarar una columna NVARCHAR
es usar la siguiente sintaxis:
NVARCHAR(max)
En esta sintaxis, max es el tamaño máximo de almacenamiento en bytes, que es 2^31-1 bytes (2 GB).
En general, el tamaño de almacenamiento real en bytes de un valor NVARCHAR
es dos veces el número de caracteres ingresados más 2 bytes.
Los sinónimos ISO
de NVARCHAR
son NATIONAL CHAR VARYING
o NATIONAL CHARACTER VARYING
, por lo que puedes usarlos indistintamente en la declaración de variables o la definición de datos de columna.
VARCHAR contra NVARCHAR
La siguiente tabla ilustra las principales diferencias entre los tipos de datos VARCHAR y NVARCHAR
:
DESCRIPCIÓN | VARCHAR | NVARCHAR |
---|---|---|
Tipo de datos de carácter | Caracteres no Unicode de longitud variable | Caracteres Unicode y no Unicode de longitud variable, como japonés, coreano y chino. |
Longitud máxima | Hasta 8,000 caracteres | Hasta 4000 caracteres |
Tamaño de caracteres | Ocupa 1 byte por caracter | Ocupa 2 bytes por carácter Unicode/no Unicode |
Tamaño de almacenamiento | Longitud real (en bytes) | 2 veces la longitud real (en bytes) |
Uso | Se usa cuando la longitud de los datos es variable o las columnas de longitud variable y si los datos reales siempre son mucho menores que la capacidad | Debido únicamente al almacenamiento, se usa solo si necesita compatibilidad con Unicode, como los caracteres kanji japonés o hangul coreano. |
Ejemplos de NVARCHAR de SQL Server
La siguiente declaración crea una nueva tabla que contiene una columna NVARCHAR
:
CREATE TABLE test.sql_server_nvarchar (
val NVARCHAR NOT NULL
);
En este ejemplo, la longitud de cadena de la columna NVARCHAR
es uno por defecto.
Para cambiar la longitud de la cadena de la columna val, se debe utilizar la sentencia ALTER TABLE ALTER COLUMN:
ALTER TABLE test.sql_server_Nvarchar
ALTER COLUMN val NVARCHAR (10) NOT NULL;
La siguiente declaración inserta una nueva cadena en la columna val de la tabla test.sql_server_nvarchar:
La declaración funcionó como se esperaba porque el valor de la cadena tiene una longitud menor que la longitud de la cadena definida en la definición de la columna.
La siguiente declaración intenta insertar una nueva cadena de datos cuya longitud es mayor que la longitud de la cadena de la columna val:
SQL Server regresa un error y finalizá la declaración:
String or binary data would be truncated.
The statement has been terminated.
Para encontrar el número de caracteres y el tamaño de almacenamiento en bytes
de los valores almacenados en la columna NVARCHAR, utiliza las funciones LEN y DATALENGTH de la siguiente manera:
SELECT
val,
LEN(val) len,
DATALENGTH(val) data_length
FROM
test.sql_server_nvarchar;
En este tutorial, aprendiste a usar el tipo de datos NVARCHAR
de SQL Server para almacenar datos Unicode
de longitud variable en la base de datos.