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.