Oracle
 sql >> база данни >  >> RDS >> Oracle

Обработка на Null във функция Greatest в Oracle

Въпросът ви конкретно включва две колони, но попадах в ситуации, в които имах нужда от GREATEST /LEAST с повече от две колони. В тези сценарии можете да използвате COALESCE и разширете решението до толкова колони, които искате.

Ето пример с три колони a , b и c :

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

Обърнете внимание, че подреждането на колоните на COALESCE промени, така че всяка входна колона да е първият елемент COALESCE поне веднъж. Единственият път, когато това ще върне NULL, е когато всички входни колони са NULL.

В "общото решение" броят на COALESCE изрази ще бъде равен на броя на входните колони:

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. Съветникът за модел на данни на обект получава изключение, когато се опитва да добави нова Oracle връзка

  2. Доставчикът не е съвместим с версията на клиентска грешка на Oracle при използване на Oracle.DataClient

  3. Как да заредя плосък файл с динамични колони с различен тип данни в база данни на oracle?

  4. дата като име на колона

  5. PL/SQL - Как да използваме масив в клауза IN