sql >> Database teknologi >  >> RDS >> Oracle

Håndtering af Null i den største funktion i Oracle

Dit spørgsmål involverer specifikt to kolonner, men jeg er stødt på situationer, hvor jeg havde brug for GREATEST /LEAST af mere end to kolonner. I disse scenarier kan du bruge COALESCE og udvid løsningen til så mange kolonner, du ønsker.

Her er et eksempel med tre kolonner a , b og c :

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

Bemærk, at kolonnerækkefølgen for COALESCE ændres, så hver inputkolonne er det første element COALESCE mindst en gang. Den eneste gang dette vil returnere NULL er, når alle inputkolonner er NULL.

I den "generelle løsning" er antallet af COALESCE sætninger vil være lig med antallet af inputkolonner:

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. SQL-forespørgsel Vælg første række 1 række fra flere rækker/gruppe

  2. Forespørgsel med kommaseparerede IN-parametre i PLSQL

  3. Mysql -- Sidste 30 dage

  4. Sphinx uden at bruge et auto_increment-id