Eduardo Arenas C. escribió: > José > > Quería agregar que tengas cuidado si alguno de los atributos nombre o > apellido tienes valor nulo ya que al concatenar, la expresión completa va a > salir nula. Es decir si por ejemplo tienes > > codigo | nombre | apellido > --------------------------------------------------- > 1 | eduardo | null > > al concatenar nombre y apellido el resultado va a ser nulo. > > Para evitar esto yo utilizo la función coalesce > > select codigo, (coalesce(nombre,' ')||' '||coalesce(apellido,' ') > )::varchar(40) as personas > from persona
Es buena acotación, pero la implementación tiene el problema de que quedan espacios extra cuando los campos son nulos. Si ambos campos son nulos, terminas con tres espacios en blanco! Yo consideraría usar CASE para evitar ese problema: select case when nombre is null then apellido when apellido is null then nombre else nombre || ' ' || apellido (Si usas '' en vez de ' ' en coalesce quedaría un solo espacio extra). -- Álvaro Herrera http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training & Services - Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org) Para cambiar tu suscripción: http://www.postgresql.org/mailpref/pgsql-es-ayuda