Tipos de caracteres - Amazon Redshift

Tipos de caracteres

Los tipos de datos de caracteres incluyen CHAR (carácter) y VARCHAR (carácter variable).

Almacenamiento y rangos

Los tipos de datos CHAR y VARCHAR se definen en términos de bytes, no de caracteres. Una columna CHAR solo puede contener caracteres de un byte, por lo que una columna CHAR(10) puede contener una cadena con una longitud máxima de 10 bytes. Un VARCHAR puede contener caracteres multibyte de hasta un máximo de cuatro bytes por carácter. Por ejemplo, una columna VARCHAR(12) puede contener 12 caracteres de un byte, 6 caracteres de dos bytes, 4 caracteres de tres bytes o 3 caracteres de cuatro bytes.

Nombre Almacenamiento Rango (ancho de columna)
CHAR, CHARACTER o NCHAR Longitud de la cadena, incluidos espacios en blanco anteriores o posteriores (si corresponde) 4 096 bytes
VARCHAR, CHARACTER VARYING o NVARCHAR 4 bytes + bytes totales por caracteres, donde cada carácter puede tener entre 1 y 4 bytes. 65 535 bytes (64K -1)
BPCHAR Convertido a CHAR(256) de longitud fija. 256 bytes
TEXT Convertido a VARCHAR(256). 260 bytes
nota

La sintaxis de CREATE TABLE admite la palabra clave MAX para los tipos de datos de caracteres. Por ejemplo:

create table test(col1 varchar(max));

El ajuste MAX define el ancho de la columna como 4 096 bytes para CHAR o 65 535 bytes para VARCHAR.

CHAR o CHARACTER

Utilice una columna CHAR o CHARACTER para almacenar cadenas de longitud fija. Estas cadenas está rellenadas con espacios en blanco, por lo que una columna CHAR(10) siempre ocupa 10 bytes de almacenamiento.

char(10)

Una columna CHAR sin una especificación de longitud resulta en una columna CHAR(1).

VARCHAR o CHARACTER VARYING

Utilice una columna VARCHAR o VARYING CHARACTER para almacenar cadenas de longitud variable con un límite fijo. Estas cadenas no se rellenan con espacios en blancos, por lo que una columna VARCHAR(120) consta de un máximo de 120 caracteres de un byte, 60 caracteres de dos bytes, 40 caracteres de tres bytes o 30 caracteres de cuatro bytes.

varchar(120)

Si utiliza el tipo de datos VARCHAR sin un especificador de longitud en una instrucción CREATE TABLE, la longitud predeterminada es 256. Si se utiliza en una expresión, el tamaño de la salida se determina mediante la expresión de entrada (hasta 65535).

Tipos NCHAR y NVARCHAR

Puede crear columnas con los tipos NCHAR y NVARCHAR (también conocidos como los tipos NATIONAL CHARACTER y NATIONAL CHARACTER VARYING). Estos tipos se convierten en tipos CHAR y VARCHAR, respectivamente, y se almacenan en la cantidad especificada de bytes.

Una columna NCHAR sin una especificación de longitud se convierte en una columna CHAR(1).

Una columna NVARCHAR sin una especificación de longitud se convierte en una columna VARCHAR(256).

Tipos TEXT y BPCHAR

Puede crear una tabla de Amazon Redshift con una columna TEXT, pero se convierte a una columna VARCHAR(256) que acepta valores de longitud variable con un máximo de 256 caracteres.

Puede crear una columna de Amazon Redshift con un tipo BPCHAR (carácter con espacio en blanco), que Amazon Redshift convierte a una columna CHAR(256) de longitud fija.

Importancia de los espacios en blancos anteriores y posteriores

Los tipos de datos CHAR y VARCHAR almacenan cadenas de hasta n bytes de longitud. Un intento de almacenar una cadena más grande en una columna de estos tipos genera un error, a menos que los caracteres adicionales sean todos espacios (en blanco), en cuyo caso la cadena se trunca a la longitud máxima. Si la cadena es más corta que la longitud máxima, los valores CHAR se rellenan con espacios en blanco, pero los valores VARCHAR almacenan la cadena sin espacios en blanco.

Los espacios en blanco anteriores o posteriores en valores CHAR no tienen importancia semántica. Se omiten cuando compara dos valores CHAR, no se incluyen en cálculos LENGTH y se eliminan cuando convierte un valor CHAR a otro tipo de cadena.

Los espacios anteriores o posteriores en los valores VARCHAR y CHAR no tienen importancia semántica cuando se comparan valores.

Los cálculos de longitud devuelven la longitud de cadenas de caracteres VARCHAR con espacios anteriores o posteriores incluidos en la longitud. Los espacios anteriores o posteriores no cuentan en la longitud para cadenas de caracteres de longitud fija.