Condividi tramite


Funzioni logiche - LEAST (Transact-SQL)

Si applica a: SQL Server 2022 (16.x) database SQL di Azure Istanza gestita di SQL di Azure endpoint di analisi SQL di Azure Synapse Analytics in Microsoft Fabric Warehouse in Microsoft Fabric

Questa funzione restituisce il valore minimo da un elenco di una o più espressioni.

Convenzioni relative alla sintassi Transact-SQL

Sintassi

LEAST ( expression1 [ , ...expressionN ] )

Argomenti

expression1, expressionN

Elenco di espressioni delimitate da virgole di qualsiasi tipo di dati paragonabile. La funzione LEAST richiede almeno un argomento ma ne supporta massimo 254.

Ogni espressione può essere una costante, un nome di colonna, una variabile o una funzione e qualsiasi combinazione di operatori aritmetici, bit per bit e stringa. È possibile utilizzare funzioni di aggregazione e sottoquery scalari.

Tipi restituiti

Restituisce il tipo di dati con precedenza maggiore nel set di tipi passato alla funzione. Per altre informazioni, vedere Precedenza dei tipi di dati (Transact-SQL).

Se tutti gli argomenti hanno lo stesso tipo di dati e il tipo è supportato per il confronto, LEAST restituisce tale tipo.

In caso contrario, la funzione convertirà in modo implicito tutti gli argomenti nel tipo di dati con la precedenza più alta prima del confronto e userà questo tipo come tipo restituito.

Per i tipi numerici, la scala del tipo restituito sarà uguale all'argomento di precedenza più alta o alla scala più grande se più di un argomento è del tipo di dati di precedenza più alta.

Osservazioni:

Tutte le espressioni nell'elenco di argomenti devono essere di un tipo di dati paragonabile e che può essere convertito in modo implicito nel tipo di dati dell'argomento con la precedenza più elevata.

La conversione implicita di tutti gli argomenti al tipo di dati con precedenza più alta avviene prima del confronto.

Se la conversione implicita dei tipi tra gli argomenti non è supportata, la funzione avrà esito negativo e restituirà un errore.

Per altre informazioni sulla conversione implicita ed esplicita dei dati, vedere Conversione di tipi di dati (motore di database).

Se uno o più argomenti non NULLsono , NULL gli argomenti vengono ignorati durante il confronto. Se tutti gli argomenti sono NULL, restituisce NULLLEAST .

Il confronto tra gli argomenti di carattere segue le regole di precedenza delle regole di confronto (Transact-SQL).

I tipi seguenti non sono supportati per il confronto in LEAST: varchar(max), varbinary(max) o nvarchar(max) superiore a 8.000 byte, cursor, geometry, geography, image, non byte-ordered user-defined types, ntext, table, text e xml.

I tipi di dati varchar(max), varbinary(max)e nvarchar(max) sono supportati per gli argomenti che sono di 8.000 byte o meno e verranno convertiti in modo implicito in varchar(n), varbinary(n)e nvarchar(n), rispettivamente, prima del confronto.

Ad esempio, varchar(max) può supportare fino a 8.000 caratteri se si usa un set di caratteri di codifica a byte singolo e nvarchar(max) può supportare fino a 4.000 coppie di byte (presupponendo la codifica dei caratteri UTF-16).

Esempi

R. Restituisce un valore minimo da un elenco di costanti

Nell'esempio seguente viene restituito il valore minimo dall'elenco di costanti fornite.

La scala del tipo restituito è determinata dalla scala dell'argomento con il tipo di dati di precedenza più alta.

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

Questo è il set di risultati.

LeastVal
-------
 3.1415

(1 rows affected)

B. Restituisce un valore minimo da un elenco di tipi di caratteri

Nell'esempio seguente viene restituito il valore minimo dall'elenco di costanti di carattere fornite.

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

Questo è il set di risultati.

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

(1 rows affected)

C. Restituisce un valore minimo da un elenco di argomenti di colonna

In questo esempio viene restituito il valore minimo da un elenco di argomenti di colonna e vengono ignorati i valori NULL durante il confronto. Questo esempio usa il database AdventureWorksLT, installabile rapidamente come database di esempio per un nuovo database SQL di Azure. Per ulteriori informazioni, vedere Database di esempio 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;

Questo è il set di risultati. EarliestDate sceglie il valore di data più grande tra i tre, 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. Usare LEAST con le variabili locali

In questo esempio viene usato LEAST per determinare il valore massimo di un elenco di variabili locali all'interno del predicato di una clausola 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

Questo è il set di risultati. Vengono visualizzati solo i valori inferiori a 0,65.

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

(2 rows affected)

E. Usare LEAST con colonne, costanti e variabili

In questo esempio viene usato LEAST per determinare il valore minimo di un elenco che include colonne, costanti e variabili.

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

Questo è il set di risultati.

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

(3 rows affected)