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 cadaexpr
após o primeiro ser convertido implicitamente para o tipo de dados do primeiroexpr
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.