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

[SOLUCIONADO] NVL function

Estas en el tema de NVL function en el foro de Oracle en Foros del Web. SQL> select NVL(NULLIF(sysdate,sysdate), 'Same Day') from dual; select NVL(NULLIF(sysdate,sysdate), 'Same Day') from dual * ERROR at line 1: ORA-01858: a non-numeric character was found where ...
  #1 (permalink)  
Antiguo 11/01/2015, 16:59
 
Fecha de Ingreso: octubre-2006
Mensajes: 59
Antigüedad: 18 años, 1 mes
Puntos: 0
NVL function

SQL> select NVL(NULLIF(sysdate,sysdate), 'Same Day') from dual;
select NVL(NULLIF(sysdate,sysdate), 'Same Day') from dual
*
ERROR at line 1:
ORA-01858: a non-numeric character was found where a numeric was expected


el nullif daria NULL

porque nvl(null,'same day') porque no dá 'same day' ???

Última edición por general9000; 11/01/2015 a las 18:58
  #2 (permalink)  
Antiguo 12/01/2015, 11:40
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: NVL function

Por lo pronto, ¿qué versión de Oracle es?
Por otor lado, para simplificar es mejor usar DECODE:
Código SQL:
Ver original
  1. SELECT DECODE(NULLIF (SYSDATE, SYSDATE), NULL, 'Same Day', 'Different Day') Dias
  2.   FROM DUAL;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 13/01/2015, 08:07
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: NVL function

La razón es la siguiente:
NVL es una función que parte de las siglas (Null VaLue) y que en Oracle aplica para diferentes tipos de datos.
Entonces.. si el primer parametro de la función es un numerico, el resultado debe ser un numerico.
Si es date, que es tu caso, debe ser date la salida. Si es string, el retorno debe ser string.

Como quieres un mensaje basado en una fecha y partiendo del criterio que te menciono, esta sería una forma:
Código SQL:
Ver original
  1. SELECT NVL(NULLIF(TO_CHAR(sysdate,'YYYY-MM-DD HH24:MI'),TO_CHAR(sysdate,'YYYY-MM-DD HH24:MI')), 'Same Day') dia FROM dual;
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #4 (permalink)  
Antiguo 13/01/2015, 11:08
 
Fecha de Ingreso: octubre-2006
Mensajes: 59
Antigüedad: 18 años, 1 mes
Puntos: 0
Respuesta: NVL function

gracias
huesos52
por la explicación

Etiquetas: function, select
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 11:31.