PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Função LEAST() no PostgreSQL


No PostgreSQL, o LEAST() A função retorna o menor valor de uma lista de qualquer número de expressões.

O LEAST() A função não está incluída no padrão SQL, mas é uma extensão popular que muitos dos principais RDBMSs suportam.

Sintaxe

LEAST(value [, ...])

Isso basicamente significa que podemos passar um ou mais valores para a função.

Exemplo


Aqui está um exemplo simples para demonstrar:
SELECT LEAST( 5, 2, 9 );

Resultado:
2

Tipo de dados comum


As expressões devem ser todas conversíveis para um tipo de dados comum. O resultado usará esse tipo.

Se as expressões não puderem ser convertidas em um tipo de dados comum, ocorrerá um erro:
SELECT LEAST( 5, 'Two', 9 );

Resultado:
ERROR:  invalid input syntax for type integer: "Two"
LINE 1: SELECT LEAST( 5, 'Two', 9 );
                         ^

Cordas


O exemplo anterior não sugere que não podemos usar strings. É apenas para mostrar que não podemos converter tipos de dados.

Para demonstrar, aqui está um exemplo onde todos os argumentos são strings:
SELECT LEAST( 'Cat', 'Dog', 'Aardvark' );

Resultado:
Aardvark

Datas


Aqui está uma comparação de strings de data:
SELECT LEAST(date '2030-01-01', date '2030-12-31');

Resultado:
2030-01-01

Valores nulos


Os valores nulos são ignorados, a menos que todas as expressões sejam null . Se todas as expressões forem null , então null é retornado:
\pset null '<null>'
SELECT 
    LEAST( 5, null, 9 ),
    LEAST( null, null, null );

Resultado:
 least | least  
-------+--------
     5 | <null>

Por padrão, o psql retorna a string vazia em valores nulos. Na primeira linha deste exemplo, defino valores nulos para a saída <null> para que seja mais fácil para nós ver o resultado nulo.

Argumentos ausentes


Chamando LEAST() sem nenhum argumento resulta em um erro:
SELECT LEAST();

Resultado:
ERROR:  syntax error at or near ")"
LINE 1: SELECT LEAST();
                     ^

No entanto, podemos passar um argumento sem erro:
SELECT LEAST( 1 );

Resultado:
1