Question

Are there any nvl() equivalent functions in SQL?

Or something close enough to be used in the same way in certain scenarios?


UPDATE:
no if statements
no case statements
no isnull
no coalesce

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
Was it helpful?

Solution

You seem to be using Informix.

AFAIK, there is DECODE there:

DECODE(field, NULL, 'it is null, man', field) should give you same result as NVL(field, 'it is null, man')

Please post exact name and version of the RDBMS you are using.

OTHER TIPS

ISNULL (for a single replace)

or

COALESCE (Returns the first nonnull expression among its arguments.)

The problem with your DECODE statement that is generating the 800 error is simple. '01/01/2009' is being treated as a string, and it's actually the 4th argument that generates the error.

Appreciate that the input and output of a DECODE statement can be different data-types, so the engine requires you to be more explicit in this case. (Do you want purge_date cast as a string or the string '01/01/2009', or the string argument parsed as a date or the original date? There's no way for the engine to know.

Try this:

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

You could also write that 3rd argument as:

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

depending on version and personal preference.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top