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

Responder a