
Resumen: en este tutorial, aprenderás a usar el tipo de datos NCHAR
de SQL Server para almacenar datos de cadenas de caracteres Unicode
de longitud fija.
Introducción del tipo de datos NCHAR de SQL Server
Para almacenar datos de cadenas de caracteres Unicode de longitud fija en la base de datos, utiliza el tipo de datos NCHAR
de SQL Server:
NCHAR(n)
En esta sintaxis, n
especifica la longitud de la cadena que va de 1 a 4000. El tamaño de almacenamiento de un valor NCHAR
es dos veces n bytes
.
Los sinónimos ISO
para NCHAR
son NATIONAL CHAR
y NATIONAL CHARACTER
, por lo tanto, puedes usarlos indistintamente.
De forma similar al tipo de datos CHAR
, utiliza NCHAR
para almacenar únicamente cadenas de caracteres de longitud fija. Si las longitudes de los valores de datos son variables, debes considerar usar el tipo de datos VARCHAR
o NVARCHAR
.
CHAR contra NCHAR
Las siguientes son las principales diferencias entre los tipos de datos CHAR
y NCHAR
CHAR | NCAHR |
---|---|
Almacene solo caracteres que no sean Unicode. | Almacene caracteres Unicode en forma de caracteres UNICODE UCS-2. |
Necesita 1 byte para almacenar un carácter | Necesita 2 bytes para almacenar un carácter. |
El tamaño de almacenamiento es igual al tamaño especificado en la definición de columna o declaración de variable. | El tamaño de almacenamiento es igual al doble del tamaño especificado en la definición de columna o declaración de variable. |
Almacena hasta 8000 caracteres. | Almacena hasta 4000 caracteres. |
Ejemplo de SQL Server NCHAR
La siguiente declaración crea una nueva tabla con una columna NCHAR
:
CREATE TABLE test.sql_server_nchar (
val NCHAR(1) NOT NULL
);
La siguiente instrucción INSERT inserta el carácter a (?) en japonés en la columna NCHAR
:
INSERT INTO test.sql_server_nchar (val)
VALUES
(N'?');
"Ten en cuenta que debes prefijar las constantes de la cadena de caracteres
Unicode
con la letraN
. De lo contrario, SQL Server convertirá la cadena a la página de códigos predeterminada de la base de datos que puede no reconocer algunos caracteres Unicode determinados."
Si insertas una cadena de caracteres cuya longitud es mayor que la especificada en la definición de la columna, SQL Server emite un error y finaliza la instrucción.
Por ejemplo, la siguiente declaración intenta insertar una cadena con dos caracteres en la columna val de la tabla test.sql_server_nchar
:
INSERT INTO test.sql_server_nchar (val)
VALUES
(N'??');
SQL Server regresa el siguiente mensaje de error:
String or binary data would be truncated.
The statement has been terminated.
Para encontrar el número de caracteres y el número de bytes de los valores de la columna val, utiliza las funciones LEN y DATALENGTH
de la siguiente manera:
SELECT
val,
len(val) length,
DATALENGTH(val) data_length
FROM
test.sql_server_nchar;
Resultado:
val | len | data_length |
---|---|---|
? | 1 | 2 |
En este tutorial, aprendiste a usar el tipo de datos NCHAR
de SQL Server para almacenar cadenas de caracteres Unicode de longitud fija en la base de datos.