Funções lógicas – LEAST (Transact-SQL)

Aplica-se a:SQL Server 2022 (16.x) Banco de Dados SQL do AzureInstância Gerenciada de SQL do AzureAzure Synapse AnalyticsPonto de extremidade de análises SQL no Microsoft FabricWarehouse no Microsoft Fabric

Essa função retorna o valor mínimo de uma lista de uma ou mais expressões.

Convenções de sintaxe de Transact-SQL

Sintaxe

LEAST ( expression1 [ , ...expressionN ] )

Argumentos

expression1, expressionN

Uma lista de expressões separadas por vírgulas de qualquer tipo de dados comparável. A função LEAST requer pelo menos um argumento e não oferece suporte a mais de 254 argumentos.

Cada expressão pode ser uma constante, variável, nome de coluna ou função, e qualquer combinação de operadores aritméticos, bit a bit e de cadeia de caracteres. Funções de agregação e subconsultas escalares são permitidas.

Tipos de retorno

Retorna o tipo de dados com a precedência mais alta do conjunto de tipos transmitido à função. Para obter mais informações, confira Precedência de tipo de dados (Transact-SQL).

Se todos os argumentos tiverem o mesmo tipo de dados e o tipo tiver suporte para comparação, LEAST retornará esse tipo.

Caso contrário, a função converterá implicitamente todos os argumentos para o tipo de dados da precedência mais alta antes da comparação e o usará como o tipo de retorno.

Para tipos numéricos, a escala do tipo de retorno será igual ao argumento de precedência mais alta ou a maior escala se mais de um argumento for do tipo de dados de precedência mais alta.

Comentários

Todas as expressões na lista de argumentos devem ser de um tipo de dados comparável e poder ser convertidas implicitamente no tipo de dados do argumento com a precedência mais alta.

A conversão implícita de todos os argumentos para o tipo de dados de precedência mais alta ocorre antes da comparação.

Se a conversão implícita de tipo entre os argumentos não tiver suporte, a função falhará e retornará um erro.

Para obter mais informações sobre conversões implícitas e explícitas, confira Conversão de tipo de dados (Mecanismo de Banco de Dados).

Se um ou mais argumentos não forem NULL, os argumentos NULL serão ignorados durante a comparação. Se todos os argumentos forem NULL, LEAST retornará NULL.

A comparação de argumentos de caractere segue as regras de Precedência de ordenação (Transact-SQL).

Os seguintes tipos não são suportados para a comparação em LEAST: varchar(max), varbinary(max) ou nvarchar(max) excedendo 8.000 bytes, cursor, geometria, geografia, imagem, tipos definidos pelo usuário não ordenados por byte, ntext, table, text e xml.

Os tipos de dados varchar(max), varbinary(max) e nvarchar(max) são suportados para argumentos de 8.000 ou menos e serão convertidos implicitamente para varchar(n), varbinary(n) e nvarchar(n), respectivamente, antes da comparação.

Por exemplo, varchar(max) pode ter suporte até 8.000 caracteres se estiver usando um conjunto de caracteres de codificação de byte único, e nvarchar(max) pode ter suporte até 4.000 pares de bytes (assumindo a codificação de caracteres UTF-16).

Exemplos

R. Retornar valor mínimo de uma lista de constantes

O exemplo a seguir retorna o valor mínimo da lista de constantes fornecida.

A escala do tipo de retorno é determinada pela escala do argumento com o tipo de dados de precedência mais alta.

SELECT LEAST('6.62', 3.1415, N'7') AS LeastVal;
GO

Este é o conjunto de resultados.

LeastVal
-------
 3.1415

(1 rows affected)

B. Retornar valor mínimo de uma lista de tipos de caracteres

O exemplo a seguir retorna o valor mínimo da lista de constantes de caracteres fornecida.

SELECT LEAST('Glacier', N'Joshua Tree', 'Mount Rainier') AS LeastString;
GO

Este é o conjunto de resultados.

LeastString
-------------
Glacier

(1 rows affected)

C. Retornar o valor mínimo de uma lista de argumentos da coluna

Este exemplo retorna o valor mínimo de uma lista de argumentos de coluna e ignora os valores NULL durante a comparação. Este exemplo usa o banco de dados AdventureWorksLT, que pode ser instalado rapidamente como banco de dados de exemplo para um novo Banco de Dados SQL do Azure. Para obter mais informações, consulte os Bancos de dados de exemplo do AdventureWorks.

SELECT P.Name,
    P.SellStartDate,
    P.DiscontinuedDate,
    PM.ModifiedDate AS ModelModifiedDate,
    LEAST(P.SellStartDate, P.DiscontinuedDate, PM.ModifiedDate) AS EarliestDate
FROM SalesLT.Product AS P
INNER JOIN SalesLT.ProductModel AS PM
    ON P.ProductModelID = PM.ProductModelID
WHERE LEAST(P.SellStartDate, P.DiscontinuedDate, PM.ModifiedDate) >= '2007-01-01'
    AND P.SellStartDate >= '2007-01-01'
    AND P.Name LIKE 'Touring %'
ORDER BY P.Name;

Este é o conjunto de resultados. EarliestDate escolhe o menor valor de data dos três valores, ignorando NULL.

Name                   SellStartDate           DiscontinuedDate    ModelModifiedDate       EarliestDate
---------------------- ----------------------- ------------------- ----------------------- -----------------------
Touring Pedal          2007-07-01 00:00:00.000 NULL                2009-05-16 16:34:29.027 2007-07-01 00:00:00.000
Touring Tire           2007-07-01 00:00:00.000 NULL                2007-06-01 00:00:00.000 2007-06-01 00:00:00.000
Touring Tire Tube      2007-07-01 00:00:00.000 NULL                2007-06-01 00:00:00.000 2007-06-01 00:00:00.000

(3 rows affected)

D. Usar LEAST com variáveis locais

Este exemplo usa LEAST para determinar o valor mínimo de uma lista de variáveis locais dentro do predicado de uma cláusula WHERE.

CREATE TABLE dbo.Studies (
    VarX VARCHAR(10) NOT NULL,
    Correlation DECIMAL(4, 3) NULL
    );

INSERT INTO dbo.Studies
VALUES ('Var1', 0.2),
    ('Var2', 0.825),
    ('Var3', 0.61);
GO

DECLARE @PredictionA DECIMAL(2, 1) = 0.7;
DECLARE @PredictionB DECIMAL(3, 1) = 0.65;

SELECT VarX,
    Correlation
FROM dbo.Studies
WHERE Correlation < LEAST(@PredictionA, @PredictionB);
GO

Este é o conjunto de resultados. Somente valores menores que 0,65 são exibidos.

VarX       Correlation
---------- -----------
Var1              .200
Var3              .610

(2 rows affected)

E. Usar LEAST com colunas, constantes e variáveis

Este exemplo usa LEAST para determinar o valor mínimo de uma lista que inclui colunas, constantes e variáveis.

CREATE TABLE dbo.Studies (
    VarX VARCHAR(10) NOT NULL,
    Correlation DECIMAL(4, 3) NULL
    );

INSERT INTO dbo.Studies
VALUES ('Var1', 0.2),
    ('Var2', 0.825),
    ('Var3', 0.61);
GO

DECLARE @VarX DECIMAL(4, 3) = 0.59;

SELECT VarX,
    Correlation,
    LEAST(Correlation, 1.0, @VarX) AS LeastVar
FROM dbo.Studies;
GO

Este é o conjunto de resultados.

VarX       Correlation           LeastVar
---------- --------------------- ---------------------
Var1       0.200                 0.200
Var2       0.825                 0.590
Var3       0.610                 0.590

(3 rows affected)