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

GREATEST() Функция в Oracle

В Oracle Database, GREATEST() функцията връща най-големия от списък от един или повече изрази.

Синтаксис

Синтаксисът е така:

GREATEST(expr [, expr ]...)

Първият expr се използва за определяне на типа връщане:

  • Ако първият expr е числов, тогава Oracle определя аргумента с най-висок числов приоритет, имплицитно преобразува останалите аргументи в този тип данни преди сравнението и връща този тип данни.
  • Ако първият expr е не числово, след което всеки expr след като първият се преобразува имплицитно към типа данни на първия expr преди сравнението.

Пример

Ето един пример:

SELECT GREATEST('a', 'b', 'c')
FROM DUAL;

Резултат:

c

Ето още няколко:

SELECT 
    GREATEST('A', 'a') AS "r1",
    GREATEST('Cat', 'Dog', 'Dot') AS "r2",
    GREATEST(1, 2, 3) AS "r3",
    GREATEST(1, '2', 3) AS "r4",
    GREATEST('Cat', '2001-12-31') AS "r5"
FROM DUAL;

Резултат:

   r1     r2    r3    r4     r5 
_____ ______ _____ _____ ______ 
a     Dot        3     3 Cat   

Изрази

Аргументите могат да включват изрази като този:

SELECT GREATEST(2 * 3, 1 * 3)
FROM DUAL;

Резултат:

6

Дати

Ето сравнение на низовете за дата:

SELECT GREATEST(DATE '2020-01-01', DATE '2021-01-01')
FROM DUAL;

Резултат:

01-JAN-21

Датата се връща във формата на датата на текущата сесия. Вижте как да проверите формата на датата на текущата сесия.

Нулеви стойности

Ако някой аргумент е null , резултатът е null :

SET NULL 'null';
SELECT 
    GREATEST(null, 2),
    GREATEST(1, null)
FROM DUAL;

Резултат:

   GREATEST(NULL,2)    GREATEST(1,NULL) 
___________________ ___________________ 
null                               null

По подразбиране SQLcl и SQL*Plus връщат празно пространство, когато се появи нулева стойност в резултат на SQL SELECT изявление.

Можете обаче да използвате SET NULL за да посочите различен низ, който да бъде върнат. Тук посочих, че низът null трябва да бъдат върнати.

Невалиден брой аргументи

Извикване на GREATEST() без никакви аргументи води до грешка:

SELECT GREATEST()
FROM DUAL;

Резултат:

SQL Error: ORA-00938: not enough arguments for function
00938. 00000 -  "not enough arguments for function"

Можете също да използвате LEAST() за да върне най-малкото от списък от един или повече изрази.


  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. Автоматизирайте задания за интегриране на данни на IRI с Oracle Job Scheduler

  3. Как да възстановите база данни с помощта на RMAN

  4. Получаване на грешка - ORA-01858:беше намерен нецифров знак, където се очакваше число

  5. скаларна подзаявка в израза if Условие в PL/SQL