Tipos de datos CHAR de SQL Server

Resumen: en este tutorial, aprenderás a usar el tipo de datos CHAR
de SQL Server para almacenar cadenas de caracteres no Unicode de longitud fija en la base de datos.
Introducción al tipo de datos CHAR de SQL Server
Si deseas almacenar datos de cadena no Unicode de longitud fija, se recomienda usar el tipo de datos CHAR
de SQL Server
:
CHAR(n)
En la sintaxis anterior, n especifica la longitud de la cadena que va de 1 a 8000.
Debido a que n es opcional, si no lo especificas en una declaración de definición de datos o declaración de variable, su valor predeterminado es 1.
Debes usar el tipo de datos CHAR
solo cuando los tamaños de los valores en la columna son fijos.
Cuando insertas un valor de cadena en una columna CHAR
, si la longitud del valor de la cadena es menor que la longitud especificada en la columna, SQL Server
agregará espacios al final de la columna. Sin embargo, cuando seleccionas este valor de cadena, SQL Server
elimina los espacios finales antes de devolverlo.
Por otro lado, si insertas un valor cuya longitud excede la longitud de la columna, SQL Server
emite un mensaje de error.
"Ten en cuenta que el sinónimo ISO para CHAR es CHARACTER, por lo que puede usarlos indistintamente."
Ejemplo de tipo de datos CHAR de SQL Server
La siguiente declaración crea una nueva tabla que contiene una columna CHAR
:
CREATE TABLE test.sql_server_char (
val CHAR(3)
);
Ten en cuenta que si no tienes el esquema (schema) test en la base de datos, puedes crearlo usando la siguiente instrucción antes de crear la tabla sql_server_char
:
CREATE SCHEMA test;
GO
Para insertar una cadena de caracteres de longitud fija en la columna CHAR
, usa la declaración INSERT de la siguiente manera:
INSERT INTO test.sql_server_char (val)
VALUES
('EWG');
La declaración funcionó como se esperaba.
La siguiente instrucción intenta insertar una nueva cadena de caracteres cuya longitud excede la longitud de la columna:
INSERT INTO test.sql_server_char (val)
VALUES
('EWG2022');
SQL Server regresa el siguiente error:
String or binary data would be truncated.
The statement has been terminated.
La siguiente declaración inserta un solo carácter en la columna val de la tabla test.sql_server_char
:
INSERT INTO test.sql_server_char (val)
VALUES
('A');
En SQL Server, la función LEN devuelve el número de caracteres en una columna específica que excluye los espacios en blanco finales y la función DATALENGTH
devuelve el número de bytes.
Observa la siguiente declaración:
SELECT
val,
LEN(val) len,
DATALENGTH(val) data_length
FROM
sql_server_char;
Resultado:
val | len | data_length |
---|---|---|
EWG | 3 | 3 |
A | 1 | 3 |
Aunque el carácter 'A' es solo un carácter, el número de bytes de la columna es fijo y el resultado es tres.
En este tutorial, aprendiste a usar el tipo de datos CHAR
de SQL Server para almacenar cadenas de caracteres no Unicode de longitud fija en la base de datos.