Pregunta

¿Hay alguna función equivalente nvl () en SQL?

¿O algo lo suficientemente cercano como para ser usado de la misma manera en ciertos escenarios?


ACTUALIZAR:
no hay declaraciones
sin declaraciones de casos
sin isnull
sin fusión

select nvl (purge_date,"SODIUFOSDIUFSDOIFUDSF") from id_rec where id=36581;


(expression)

SODIUFOSDIUFSDOIFUDSF

1 row(s) retrieved.

select isnull (purge_date,"SODIUFOSDIUFSDOIFUDSF") from id_rec where id=36581;

  674: Routine (isnull) can not be resolved.
Error in line 1
Near character position 8

select coalesce (purge_date,"SODIUFOSDIUFSDOIFUDSF") from id_rec where id=36581;

  674: Routine (coalesce) can not be resolved.
Error in line 1
Near character position 8

select decode(purge_date, NULL, "01/01/2009", purge_date) from id_rec where id=74115;

  800: Corresponding types must be compatible in CASE expression.
Error in line 1
Near character position 57
¿Fue útil?

Solución

Parece que está utilizando Informix.

AFAIK, hay DECODE allí:

DECODE (campo, NULL, 'es nulo, man', campo) debería darle el mismo resultado que NVL (campo, 'es nulo, man')

Publique el nombre exacto y la versión del RDBMS que está utilizando.

Otros consejos

ISNULL (para un solo reemplazo)

o

COALESCE (Devuelve la primera expresión no nula entre sus argumentos).

El problema con su declaración DECODE que genera el error 800 es simple. '01 / 01/2009 ' se trata como una cadena, y en realidad es el cuarto argumento que genera el error.

Aprecie que la entrada y salida de una declaración DECODE puede ser de diferentes tipos de datos, por lo que el motor requiere que sea más explícito en este caso. (¿Desea purge_date emitido como una cadena o la cadena '01 / 01/2009 ', o el argumento de cadena analizado como una fecha o la fecha original? No hay manera para que el motor lo sepa.

Prueba esto:

SELECT DECODE(purge_date, NULL, '01/01/2009'::DATE, purge_date)

También podría escribir ese tercer argumento como:

    DATE('01/01/2009')
    MDY(1,1,2009)

dependiendo de la versión y preferencia personal.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top