Ejemplos con tipos de caracteres - Amazon Redshift

Ejemplos con tipos de caracteres

Instrucción CREATE TABLE

La siguiente instrucción CREATE TABLE demuestra el uso de tipos de datos VARCHAR y CHAR:

create table address( address_id integer, address1 varchar(100), address2 varchar(50), district varchar(20), city_name char(20), state char(2), postal_code char(5) );

Los siguientes ejemplos utilizan esta tabla.

Espacios en blanco anteriores o posteriores en cadenas de caracteres de longitud variable

Dado que ADDRESS1 es una columna VARCHAR, los espacios en blanco anteriores o posteriores en la segunda dirección insertada no tienen importancia semántica. En otras palabras, estas dos direcciones insertadas coinciden.

insert into address(address1) values('9516 Magnolia Boulevard'); insert into address(address1) values('9516 Magnolia Boulevard ');
select count(*) from address where address1='9516 Magnolia Boulevard'; count ------- 2 (1 row)

Si la columna ADDRESS1 fuera una columna CHAR y se insertaran los mismo valores, la consulta COUNT(*) reconocería que las cadenas de caracteres son iguales y devolvería 2.

Resultados de la función LENGTH

La función LENGTH reconoce espacios en blancos anteriores o posteriores en columnas VARCHAR:

select length(address1) from address; length -------- 23 25 (2 rows)

Un valor de Augusta en la columna CITY_NAME, que es una columna CHAR, siempre devolvería una longitud de 7 caracteres, independientemente de cualquier espacio en blanco anterior o posterior en la cadena de entrada.

Valores que superan la longitud de la columna

Las cadenas de caracteres no se truncan para ajustarse al ancho declarado de la columna:

insert into address(city_name) values('City of South San Francisco'); ERROR: value too long for type character(20)

Una solución a este problema es formar el valor con el tamaño de la columna:

insert into address(city_name) values('City of South San Francisco'::char(20));

En este caso, se cargarían los primeros 20 caracteres de la cadena (City of South San Fr) en la columna.