Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 25-02-2008
Avatar de david_uh
david_uh david_uh is offline
Miembro
 
Registrado: may 2007
Ubicación: Arequipa, Perú
Posts: 227
Poder: 17
david_uh Va por buen camino
Question concatenar cadenas y NULL ????????????

HOLA foro estoy trabajanedo con firebird y me pasa el siguiente poblema

como concateno cadenas en una consulta de firebird

Código SQL [-]
 
select nombre || apellidos as cliente from clientes
pero si algunos de los campos es null todo es null como puedo hacer para covertir los null en un espacio vacio
gracias de antemano por cualquier respuesta

Saludos
__________________
Yo se que muchas veces te paso ESTO
Responder Con Cita
  #2  
Antiguo 25-02-2008
Avatar de RONPABLO
[RONPABLO] RONPABLO is offline
Miembro Premium
 
Registrado: oct 2004
Posts: 1.514
Poder: 21
RONPABLO Va por buen camino
usa coalesce, es algo así:

Código SQL [-]
select coalesce(nombre,'') || coalesce(' ' || apellidos,'') as cliente from clientes
__________________
"Como pasa el tiempo..... ayer se escribe sin H y hoy con H"

Última edición por RONPABLO fecha: 25-02-2008 a las 03:28:54.
Responder Con Cita
  #3  
Antiguo 28-02-2008
Avatar de david_uh
david_uh david_uh is offline
Miembro
 
Registrado: may 2007
Ubicación: Arequipa, Perú
Posts: 227
Poder: 17
david_uh Va por buen camino
Gracias RONPABLO por tu respuesta, hallé una solución expongo lo que hice a continuación por si a alguien le sirve.

Dado que cualquiera de los campos pueden ser nulos lo solucione asi

Código SQL [-]
select coalesce(trim(nombres)||' ','' ) || coalesce(trim(apellidos)||' ','' )  || coalesce(trim(razonsocial)||' ','' )  as cliente from clientes

coalesce toma varios argumentos y devuelve el primero que NO es null por ejemplo
Código SQL [-]
coalesce(apellidos,'' )
si apellidos es null entonces devuelve el espacio vacio y si apellidos no es null devuelve el contenido de apellidos.

Uso trim para concatenar si el nombre es null entonces null + ' ' = null y si no es null entocnes devuelve el contenido del campo apellido mas un espacio en blanco para concatenarlo al siguiente campo y asi sucesivamente
__________________
Yo se que muchas veces te paso ESTO
Responder Con Cita
  #4  
Antiguo 28-02-2008
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Una mejor solucion es evitar los campos NULL como la plaga.

Es mas simple, es menos bug y es mas predecible. El unico lugar donde un NULL debe existir es cuando necesitas una logica triple (1,0, NULL) para marcar la inexistencia. Que de paso es algo raro. O deberia serlo.
__________________
El malabarista.
Responder Con Cita
  #5  
Antiguo 28-02-2008
Avatar de david_uh
david_uh david_uh is offline
Miembro
 
Registrado: may 2007
Ubicación: Arequipa, Perú
Posts: 227
Poder: 17
david_uh Va por buen camino
es mejor asi, el null si no se entiende bien es "impredecible "
__________________
Yo se que muchas veces te paso ESTO
Responder Con Cita
  #6  
Antiguo 28-02-2008
Avatar de RONPABLO
[RONPABLO] RONPABLO is offline
Miembro Premium
 
Registrado: oct 2004
Posts: 1.514
Poder: 21
RONPABLO Va por buen camino
yo el trim lo evito haciendo

Código SQL [-]
select coalesce(nombre,'') || coalesce(' ' || apellido1,'') || coalesce(' ' || apellido2,'').....
o mejor dicho al concatener " ' ' || null " el resultado es null, entonces al estar dentro de coalesce(' ' || apellido1,'') y si apellido1 es null coalesce(' ' || null,'') ya me evite el trim
__________________
"Como pasa el tiempo..... ayer se escribe sin H y hoy con H"
Responder Con Cita
  #7  
Antiguo 28-02-2008
Avatar de david_uh
david_uh david_uh is offline
Miembro
 
Registrado: may 2007
Ubicación: Arequipa, Perú
Posts: 227
Poder: 17
david_uh Va por buen camino
pasa que algunos ponen en el nombre "juan " y en el apellido " perez " en tonces para que no haya una salida anormal le hago trim
__________________
Yo se que muchas veces te paso ESTO
Responder Con Cita
  #8  
Antiguo 28-02-2008
Avatar de RONPABLO
[RONPABLO] RONPABLO is offline
Miembro Premium
 
Registrado: oct 2004
Posts: 1.514
Poder: 21
RONPABLO Va por buen camino
si... muy cierto... yo para evitar eso hago el trim desde el momento de la captura en un onExit del edit ya que luego comparando me trae muchos problemas en la bd
__________________
"Como pasa el tiempo..... ayer se escribe sin H y hoy con H"
Responder Con Cita
  #9  
Antiguo 29-02-2008
Avatar de david_uh
david_uh david_uh is offline
Miembro
 
Registrado: may 2007
Ubicación: Arequipa, Perú
Posts: 227
Poder: 17
david_uh Va por buen camino
aunque mejor seria un triger en la base de datos tambien no?
__________________
Yo se que muchas veces te paso ESTO
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Concatenar registro RogerGR Oracle 1 07-08-2007 00:00:15
cambiar campo null a not null andressanchez Firebird e Interbase 8 18-09-2006 23:00:09
Concatenar y Group By remy Firebird e Interbase 2 26-09-2005 10:43:05
Concatenar Streams johncook Varios 6 27-11-2004 04:25:43
Concatenar cadenas con tabulador ctronx Varios 3 12-08-2004 03:13:43


La franja horaria es GMT +2. Ahora son las 12:10:27.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi