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 Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 19-06-2003
mosorio mosorio is offline
Miembro
 
Registrado: may 2003
Posts: 159
Poder: 22
mosorio Va por buen camino
Concatenar campos

Hola,
Quiero hacer una concatenación de campos en firebird 1.0.1 como aparece en el libro de la cara oculta de delphi y no me sale ningún dato, lo otro curioso es que con el iboconsole cuando utilizo el concatenador no lo reconoce. No se si es que lo hago mal o en firebir es dif. a ib la concatenacion.

el ejemplo aparece asi:

Cita:
select cliente, telefono ||' '|| fax as telefonos from clientes
Con comillas simples o dobles he intentado hacerlo.

Gracias de antemano.
Responder Con Cita
  #2  
Antiguo 19-06-2003
Avatar de kinobi
kinobi kinobi is offline
Miembro
 
Registrado: may 2003
Posts: 2.621
Poder: 24
kinobi Va por buen camino
Hola,

si alguno de los dos campos contatenados es NULL, la concatenación de ambos es NULL.

Saludos.
Responder Con Cita
  #3  
Antiguo 20-06-2003
mosorio mosorio is offline
Miembro
 
Registrado: may 2003
Posts: 159
Poder: 22
mosorio Va por buen camino
Hola kinobi,
He realizado nuevamente la consulta hoy y me he encontrado con la sorpresa de que si funciona, a pesar de que dices que si uno de los campos es nulo el resultado es nulo. Las pruebas las hago con firebird e iboconsole.

Cita:
select
cliente, telefono1 ||' - '|| telefono2 ||' - '|| fax
from
clientes
Los dos primeros campos si tienen información, pense que podría pasar algo, y he eliminado el segundo campo y solo he realizado la ocnsulta con el primero y el último y ha dado la respuesta que esperaba, solo el primer dato.

Me podrías decir que puede suceder o estar sucediendo con las respuestas de las consultas, si se pude detectar alguna anomalía en el motor??

La versión que tengo de firebird es: WI-T1.5.0.3233
Pero la que tengo en casa es otra, creo que es la 1.0.3 ó 1.0.1

Gracias
Responder Con Cita
  #4  
Antiguo 20-06-2003
Avatar de kinobi
kinobi kinobi is offline
Miembro
 
Registrado: may 2003
Posts: 2.621
Poder: 24
kinobi Va por buen camino
Hola,

Cita:
Posteado originalmente por mosorio
He realizado nuevamente la consulta hoy y me he encontrado con la sorpresa de que si funciona, a pesar de que dices que si uno de los campos es nulo el resultado es nulo.
Yo no he dicho que no funcionase, lo que he dicho es que la concatenación de dos campos, en los que uno de ellos (o los dos) tenga valor nulo (NULL), da como resultado de la concatenación el valor nulo (NULL).

No es algo que ocurra sólo con el operador de concatenación (||), ocurre con cualquier otro operador y tipo de datos de los operandos. Ej. si sumas un par de campos enteros en los que uno de los operandos sea nulo (NULL), el resultado de la suma será también nulo (NULL).

Vamos, que no es que no funcione, al contrario, es que funciona así. Recuerda que el valor nulo (NULL) no es ausencia de valor, su significado es que se desconoce el mismo.

Saludos.

Última edición por kinobi fecha: 20-06-2003 a las 12:40:57.
Responder Con Cita
  #5  
Antiguo 20-06-2003
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
Hola

Como comenta kinobi, el estándar SQL indica que el resultado de operar con dos valores, en los que uno de ellos sea Null, da Null.

Por eso la solución al problema pasa por utilizar un UDF para convertir el valor Null en una cadena vacía (creo que en la fbudf.dll tienes una función de este tipo llamada NVL), o bien pasar a Firebird 1.5, donde se soporta la función COALESCE que soluciona este problema, en concreto se utilizaría :

COLAESCE(Campo1, '') || COALESCE(Campo2, '')

NOTA : La función COALESCE devuelve el primer valor no nulo, de una lista de valores.

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #6  
Antiguo 06-04-2004
Avatar de fjolivares
fjolivares fjolivares is offline
Miembro
 
Registrado: dic 2003
Ubicación: Madrid
Posts: 59
Poder: 21
fjolivares Va por buen camino
parametros con coalesce

Es posible utilizar la funcion coalesce con parametros?

lo intento usar pero da error.

Saludos y gracias.
Responder Con Cita
  #7  
Antiguo 06-04-2004
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
Hola.

Esta función solo está disponible en Firebird 1.5

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
Respuesta



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


La franja horaria es GMT +2. Ahora son las 01:17:23.


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