Frage

Gibt es NVL () gleichwertige Funktionen in SQL?

Oder etwas nah genug, um in bestimmten Szenarien auf die gleiche Weise verwendet zu werden?


AKTUALISIEREN:
Nein, wenn Aussagen
Keine Fallanweisungen
Nein ist nicht
Keine Verschmelzung

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
War es hilfreich?

Lösung

Sie scheinen Informix zu verwenden.

Afaik, dort gibt es Dekodien:

DECODE(field, NULL, 'it is null, man', field) sollte Ihnen das gleiche Ergebnis geben wie NVL(field, 'it is null, man')

Bitte veröffentlichen Sie den genauen Namen und die genaue Version der von Ihnen verwendeten RDBMS.

Andere Tipps

IST NULL (für ein einzelnes Ersatz)

oder

VERSCHMELZEN (Gibt den ersten Nicht -Null -Ausdruck unter seinen Argumenten zurück.)

Das Problem mit Ihrer Decode -Anweisung, die den 800 -Fehler generiert, ist einfach. '01/01/2009' wird als Zeichenfolge behandelt, und es ist eigentlich das 4. Argument, das den Fehler erzeugt.

Schätzen Sie, dass die Eingabe und Ausgabe einer Decodes-Anweisung unterschiedliche Datentypen sein können, sodass die Engine in diesem Fall expliziter sind. (Willst du purge_date als Zeichenfolge oder String gegossen '01/01/2009', oder das String -Argument als Datum oder das ursprüngliche Datum analysiert? Es gibt keine Möglichkeit für den Motor zu wissen.

Versuche dies:

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

Sie könnten auch dieses 3. Argument als:

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

Abhängig von der Version und persönlichen Präferenz.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top