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

Най-малка стойност, но не NULL в Oracle SQL

Ако някой аргумент е NULL, искате да вземете най-малкото от другите аргументи. Ако всички аргументи са NULL, искате да върнете NULL.

Може да използвам нещо подобно за два аргумента:

LEAST(NVL(colA,colB), NVL(colB,colA))

Все пак започва да става грозно за>2 аргумента:

LEAST(COALESCE(colA,colB,colC)
     ,COALESCE(colB,colA,colC)
     ,COALESCE(colC,colA,colB))

В този момент бих започнал да обмислям магически стойности; но това може да е бъг (напр. какво ще стане, ако една от стойностите законно е магическата стойност?):

SELECT CASE WHEN r = maxv THEN NULL ELSE r END AS result
FROM   (SELECT LEAST(NVL(:colA,maxv)
                    ,NVL(:colB,maxv)
                    ,NVL(:colC,maxv)) AS r, maxv
        FROM   (SELECT 9.999999999999999999999999999999999999999e125
                       AS maxv FROM DUAL));


  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 от Java и вижте изхода на конзолата

  2. как да вмъкнете дълъг низ oracle clob или blob

  3. Вмъкване на CLOB с помощта на cx_Oracle

  4. Кой е най-добрият начин за предварително компилиране на JSP с помощта на Ant

  5. Как да създадете разделена таблица на Oracle в SQLAlchemy?