Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Função GREATEST() no Oracle


No banco de dados Oracle, o GREATEST() A função retorna o maior de uma lista de uma ou mais expressões.

Sintaxe


A sintaxe fica assim:
GREATEST(expr [, expr ]...)

A primeira expr é usado para determinar o tipo de retorno:
  • Se a primeira expr for numérico, o Oracle determinará o argumento com a precedência numérica mais alta, converterá implicitamente os argumentos restantes para esse tipo de dados antes da comparação e retornará esse tipo de dados.
  • Se a primeira expr é não numérico, então cada expr após o primeiro ser convertido implicitamente para o tipo de dados do primeiro expr antes da comparação.

Exemplo


Aqui está um exemplo:
SELECT GREATEST('a', 'b', 'c')
FROM DUAL;

Resultado:
c

Aqui estão mais alguns:
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;

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

Expressões


Os argumentos podem incluir expressões como esta:
SELECT GREATEST(2 * 3, 1 * 3)
FROM DUAL;

Resultado:
6

Datas


Aqui está uma comparação de strings de data:
SELECT GREATEST(DATE '2020-01-01', DATE '2021-01-01')
FROM DUAL;

Resultado:
01-JAN-21

A data é retornada no formato de data da sessão atual. Consulte Como verificar o formato de data da sessão atual.

Valores nulos


Se algum argumento for null , o resultado é null :
SET NULL 'null';
SELECT 
    GREATEST(null, 2),
    GREATEST(1, null)
FROM DUAL;

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

Por padrão, SQLcl e SQL*Plus retornam um espaço em branco sempre que um valor nulo ocorre como resultado de um SQL SELECT demonstração.

No entanto, você pode usar SET NULL para especificar uma string diferente a ser retornada. Aqui eu especifiquei que a string null deve ser devolvido.

Contagem de argumentos inválida


Chamando GREATEST() sem nenhum argumento resulta em um erro:
SELECT GREATEST()
FROM DUAL;

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

Você também pode usar LEAST() para retornar o mínimo de uma lista de uma ou mais expressões.