Lorena Gpe. M. Osorio escribió:
> Buen día a todos tengo una duda que talvez sea demasiado fácil pero ya ´me
> provocó dolor de cabeza,  en mysql se resuelve con rtrim pero aquí en
> postgres no he podido encontrar como evitar que me inserte espacios en
> blanco.

Puedes agregar un CHECK a la columna que impida que insertes espacios al
final, por ej. 

create table sin_espacio
  (  nombre TEXT CHECK (nombre !~ '[[:space:]]+$') );

alvherre=# insert into sin_espacio values ('joyeria');
INSERT 0 1
alvherre=# insert into sin_espacio values ('joyeria  ');
ERROR:  el nuevo registro para la relación «sin_espacio» viola la restricción 
check «sin_espacio_nombre_check»

Te permite insertar espacios en otras partes de la cadena:

alvherre=# insert into sin_espacio values ('joyas de fantasía');
INSERT 0 1
alvherre=# insert into sin_espacio values ('   joyas');
INSERT 0 1


O bien, mas sencillo, puedes poner un check que impida espacios al
frente y atras:

alvherre=# create table sin_espacios (nombre text check (nombre = 
trim(nombre)));
CREATE TABLE
alvherre=# insert into sin_espacios values ('   joyas');
ERROR:  el nuevo registro para la relación «sin_espacios» viola la restricción 
check «sin_espacios_nombre_check»
alvherre=# insert into sin_espacios values ('joyas ');
ERROR:  el nuevo registro para la relación «sin_espacios» viola la restricción 
check «sin_espacios_nombre_check»
alvherre=# insert into sin_espacios values ('joyas');
INSERT 0 1
alvherre=# insert into sin_espacios values ('otras joyas');
INSERT 0 1


(La principal diferencia es que este permite tabs y saltos de líneas, en
cambio la versión de arriba no los permite).

-- 
Alvaro Herrera                http://www.amazon.com/gp/registry/3BP7BYG9PUGI8
"Limítate a mirar... y algun día veras"
--
TIP 1: para suscribirte y desuscribirte, visita 
http://archives.postgresql.org/pgsql-es-ayuda

Responder a