Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Obsługa wartości Null w funkcji Greatest w Oracle

Twoje pytanie dotyczy konkretnie dwóch kolumn, ale napotkałem sytuacje, w których potrzebowałem GREATEST /LEAST więcej niż dwie kolumny. W tych scenariuszach możesz użyć COALESCE i rozwiń rozwiązanie do dowolnej liczby kolumn.

Oto przykład z trzema kolumnami a , b i c :

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

Zwróć uwagę, że kolejność kolumn w COALESCE zmienia się tak, że każda kolumna wejściowa jest pierwszym elementem COALESCE przynajmniej raz. Zwróci to NULL tylko wtedy, gdy wszystkie kolumny wejściowe mają wartość NULL.

W „rozwiązaniu ogólnym” liczba COALESCE zestawienia będą równe liczbie kolumn wejściowych:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Awaria aplikacji Qt podczas korzystania ze sterownika ODBC (macOS)

  2. Wstawianie pojedynczego cudzysłowu w JDBC dla zapytania SQL nie działa

  3. Komunikat o błędzie ASP Classic SQL Query, proszę o prawidłową składnię

  4. sql - oracle - wybór pierwszego i ostatniego rekordu dla określonej grupy/sku

  5. Niezdefiniowana stała kodu zapalnika i wyroczni:OCI_COMMIT_ON_SUCCESS