Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

Función COALESCE que no me sale

Estas en el tema de Función COALESCE que no me sale en el foro de Oracle en Foros del Web. Hola, Bueno les comento lo más simple que pueda. Quiero concatenar 2 columnas para ver el tiempo de trabajo: HORAS || ':' ||MINUTOS "Tiempo" El ...
  #1 (permalink)  
Antiguo 26/04/2011, 07:14
Avatar de SangrePura  
Fecha de Ingreso: febrero-2006
Mensajes: 28
Antigüedad: 18 años, 10 meses
Puntos: 0
Función COALESCE que no me sale

Hola,

Bueno les comento lo más simple que pueda. Quiero concatenar 2 columnas para ver el tiempo de trabajo:

HORAS || ':' ||MINUTOS "Tiempo"

El tema es que ambas columnas pueden ser nulas, pero en tal caso, me devuelve los ":" y eso está mal. Lo que necesito es que cuando ambas columnas sean nulas, en la columna "Tiempo" no se muestre nada, ni siquiera los 'dos puntos'.

Probé con la función coalesce pero no funciona, ya que por los dos puntos nunca detecta un valor nulo. Me gustaría saber cómo puedo resolver esto.

Muchas gracias,
  #2 (permalink)  
Antiguo 26/04/2011, 07:33
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 10 meses
Puntos: 360
Respuesta: Función COALESCE que no me sale

Código SQL:
Ver original
  1. SELECT
  2. (CASE
  3.  WHEN horas IS NULL OR minutos IS NULL THEN
  4.  'Tiempo no disponible'
  5.  ELSE  (horas || ':' || minutos)
  6.  END
  7. ) "TIEMPO"
  8.  FROM tabla;

Si quieres que no te muestre "Tiempo no disponible" simpelemente dejas las comillas vacias.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 26/04/2011, 07:51
Avatar de SangrePura  
Fecha de Ingreso: febrero-2006
Mensajes: 28
Antigüedad: 18 años, 10 meses
Puntos: 0
Respuesta: Función COALESCE que no me sale

Excelente amigo, como siempre. Tu mensaje nº 5000 no me pudo haber llegado en mejor momento

Ya que estamos, me gustaría preguntarte cuál función es mejor, si CASE o DECODE y cuál ofrece mejor rendimiento para Oracle? y cómo escribiría esta función DECODE?

Gracias por colaborarme =D
  #4 (permalink)  
Antiguo 26/04/2011, 07:55
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 10 meses
Puntos: 360
Respuesta: Función COALESCE que no me sale

Cita:
Excelente amigo, como siempre. Tu mensaje nº 5000 no me pudo haber llegado en mejor momento
Ni me había fijado.

CASE es una función que reemplaza a DECODE por ser mas optima, mas legible y con mas posibilidades. Definitivamente CASE es mejor.

Decode sigue funcionando solo por dar soporte a aplicaciones que están hechas en versiones muy viejas de oracle y que no ven la migración como una opción.

Me gusta mucho como este link explica la función decode ya que hace una comparativa con multiples ifs anidados.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #5 (permalink)  
Antiguo 26/04/2011, 08:10
Avatar de SangrePura  
Fecha de Ingreso: febrero-2006
Mensajes: 28
Antigüedad: 18 años, 10 meses
Puntos: 0
Respuesta: Función COALESCE que no me sale

Perfecto! Has sido de gran ayuda (otra vez )

Muchas gracias y un saludo,

Etiquetas: coalesce, nulo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:45.