SQL

Tipos de datos NCHAR de SQL Server

Estrada Web Group
Estrada Web Group
Tipos de datos NCHAR de SQL Server

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 letra N. 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.

Compartir artículo:

Más artículos geniales

¿Para qué sirve la función ASCII de SQL Server y cómo utilizarla?

¿Para qué sirve la función ASCII de SQL Server y cómo utilizarla?

En este tutorial, aprenderá a usar la función ASCII() de SQL Server para obtener el código ASCII de un carácter.

Ver artículo completo
Introducción al curso gratuito de SQL Server

Introducción al curso gratuito de SQL Server

SQL es un lenguaje de consulta estructurado de base de datos normalizado, utilizado por algunos motores de base de datos DB2, SQL Server, Oracle, MySql, Sybase, PostgreSQL, entre otros.

Ver artículo completo
¿Cómo determinar si una cadena es un palíndromo con REVERSE en SQL Server?

¿Cómo determinar si una cadena es un palíndromo con REVERSE en SQL Server?

Resumen: en este tutorial, aprenderás cómo usar la función SQL Server REVERSE() para devolver el orden inverso de una cadena.

Ver artículo completo

Manténgase actualizado

Obtenga excelente contenido en su bandeja de entrada todas las semanas.
Solo contenido excelente, no compartimos su correo electrónico con terceros.
Subir al inicio de la pantalla