sql >> Database >  >> RDS >> Oracle

Null afhandelen in de beste functie in Oracle

Uw vraag heeft specifiek betrekking op twee kolommen, maar ik ben situaties tegengekomen waarin ik GREATEST . nodig had /LEAST van meer dan twee kolommen. In die scenario's kunt u COALESCE . gebruiken en breid de oplossing uit tot zoveel kolommen als u wilt.

Hier is een voorbeeld met drie kolommen a , b , en c :

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

Merk op dat de kolomvolgorde van de COALESCE verandert zodat elke invoerkolom het eerste element is COALESCE ten minste een keer. De enige keer dat dit NULL oplevert, is wanneer alle invoerkolommen NULL zijn.

In de "algemene oplossing" het aantal COALESCE uitspraken zijn gelijk aan het aantal invoerkolommen:

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. Aan de slag met Oracle Autonomous Database in the Cloud

  2. Hoe de grootte van indexen in MySQL te berekenen?

  3. Haal DATETIME op in php en post het op MySQL voor transactieconsistentie

  4. Overeenkomende matrixelementen uitsluiten