sql >> Databáze >  >> RDS >> Oracle

Zpracování Null ve funkci Greatest v Oracle

Vaše otázka konkrétně zahrnuje dva sloupce, ale dostal jsem se do situací, kdy jsem potřeboval GREATEST /LEAST z více než dvou sloupců. V těchto scénářích můžete použít COALESCE a rozšiřte řešení na tolik sloupců, kolik chcete.

Zde je příklad se třemi sloupci a , b a c :

GREATEST(
    COALESCE(a, b, c),
    COALESCE(b, c, a),
    COALESCE(c, a, b)
)

Všimněte si, že pořadí sloupců COALESCE se změní tak, že každý vstupní sloupec je prvním prvkem COALESCE alespoň jednou. Jediný případ, kdy to vrátí hodnotu NULL, je, když jsou všechny vstupní sloupce NULL.

V "obecném řešení" číslo COALESCE příkazů se bude rovnat počtu vstupních sloupců:

GREATEST(
    COALESCE(col1, col2, col3, col4, ....),
    COALESCE(col2, col3, col4, ...., col1),
    COALESCE(col3, col4, ...., col1, col2),
    COALESCE(col4, ...., col1, col2, col3),
    COALESCE(...., col1, col2, col3, col4),
    ...
)


  1. Jak získat včerejší datum v Oracle

  2. MySQL:jak třídit slova v řetězci pomocí uložené funkce?

  3. ER_NOT_SUPPORTED_AUTH_MODE:Klient nepodporuje ověřovací protokol požadovaný serverem; zvážit upgrade klienta MySQL

  4. jak vložit aktuální datum do pole DATE ve formátu dd/mm/rrrr v oracle