Logische Funktionen – LEAST (Transact-SQL)

Gilt für:SQL Server 2022 (16.x) Azure SQL-DatenbankAzure SQL Managed InstanceAzure Synapse AnalyticsSQL Analytics-Endpunkt in Microsoft FabricWarehouse in Microsoft Fabric

Diese Funktion gibt den minimalen Wert aus einer Liste mit einem oder mehreren Ausdrücken zurück.

Transact-SQL-Syntaxkonventionen

Syntax

LEAST ( expression1 [ , ...expressionN ] )

Argumente

expression1, expressionN

Eine Liste von durch Komma getrennten Ausdrücken eines beliebigen vergleichbaren Datentyps. Die LEAST-Funktion erfordert mindestens ein Argument und unterstützt nicht mehr als 254 Argumente.

Jeder Ausdruck kann eine Konstante, eine Variable, ein Spaltenname oder eine Funktion sowie eine beliebige Kombination aus arithmetischen, bitweisen und Zeichenfolgenoperatoren sein. Aggregatfunktionen und skalare Unterabfragen sind zulässig.

Rückgabetypen

Gibt den Datentyp mit der höchsten Rangfolge aus dem Satz von Typen zurück, der an die Funktion übergeben wurde. Weitere Informationen finden Sie unter Rangfolge der Datentypen (Transact-SQL).

Wenn alle Argumente denselben Datentyp aufweisen und der Typ für den Vergleich unterstützt wird, gibt LEAST diesen Typ zurück.

Andernfalls konvertiert die Funktion vor dem Vergleich alle Argumente implizit in den Datentyp der höchsten Rangfolge und verwendet diesen Typ als Rückgabetyp.

Bei numerischen Typen ist die Skalierung des Rückgabetyps identisch mit dem Argument mit der höchsten Rangfolge oder der größten Skalierung, wenn mehr als ein Argument den Datentyp mit der höchsten Rangfolge hat.

Bemerkungen

Alle Ausdrücke in der Liste der Argumente müssen von einem Datentyp sein, der vergleichbar ist und implizit in den Datentyp des Arguments mit der höchsten Rangfolge konvertiert werden kann.

Die implizite Konvertierung aller Argumente in den Datentyp mit der höchsten Rangfolge erfolgt vor dem Vergleich.

Wenn eine implizite Typkonvertierung zwischen den Argumenten nicht unterstützt wird, tritt bei der Funktion ein Fehler auf, und es wird eine Fehlermeldung zurückgegeben.

Weitere Informationen zur impliziten und expliziten Konvertierung finden Sie unter Datentypkonvertierung (Datenbank-Engine).

Wenn mindestens ein Argument nicht NULL ist, werden die NULL-Argumente beim Vergleich ignoriert. Wenn alle Argumente NULL sind, gibt LEASTNULL zurück.

Der Vergleich von Zeichenargumenten folgt den Regeln der Sortierungsrangfolge (Transact-SQL).

Die folgenden Typen werden für Vergleiche in LEASTnicht unterstützt: varchar(max), varbinary(max) oder nvarchar(max), wenn 8.000 Byte überschritten werden, Cursor, geometry, geography, image, nicht byte-sortierte benutzerdefinierte Typen, ntext, Tabelle, text und xml.

Die Datentypen varchar(max), varbinary(max) und nvarchar(max) werden für Argumente mit einer Größe von max. 8.000 Byte unterstützt und werden vor dem Vergleich implizit in varchar(n), varbinary(n) bzw. nvarchar(n) konvertiert.

So kann varchar(max) beispielsweise bis zu 8.000 Zeichen unterstützen, wenn ein Einzelbyte-Codierungszeichensatz verwendet wird, und nvarchar(max) bis zu 4.000 Byte-Paare (bei Verwendung der UTF-16-Zeichencodierung).

Beispiele

A. Zurückgeben eines Minimalwerts aus einer Liste von Konstanten

Im folgenden Beispiel wird der minimale Wert aus der bereitgestellten Liste der Konstanten zurückgegeben.

Die Skalierung des Rückgabetyps wird durch die Skalierung des Arguments mit dem Datentyp mit der höchsten Rangfolge bestimmt.

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

Hier ist das Resultset.

LeastVal
-------
 3.1415

(1 rows affected)

B. Zurückgeben des Mindestwerts aus einer Liste von Zeichentypen

Im folgenden Beispiel wird der minimale Wert aus der bereitgestellten Liste der Zeichenkonstanten zurückgegeben.

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

Hier ist das Resultset.

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

(1 rows affected)

C. Zurückgeben des Mindestwerts aus einer Liste von Spaltenargumenten

Dieses Beispiel gibt den minimalen Wert aus einer Liste von Spaltenargumenten zurück und ignoriert NULL Werte während des Vergleichs. Diese Beispiel verwendet die Datenbank AdventureWorksLT, die schnell als Beispieldatenbank für eine neue Azure SQL-Datenbank installiert werden kann. Weitere Informationen finden Sie in den AdventureWorks-Beispieldatenbanken.

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;

Hier ist das Resultset. EarliestDate wählt den kleinsten Datumswert der drei Werte aus, wobei NULL ignoriert wird.

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: Verwenden von LEAST mit lokalen Variablen

In diesem Beispiel wird LEAST verwendet, um den minimalen Wert in einer Liste lokaler Variablen innerhalb des Prädikats einer WHERE-Klausel zu ermitteln.

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

Hier ist das Resultset. Nur Werte unter 0.65 werden angezeigt.

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

(2 rows affected)

E. Verwenden von LEAST mit Spalten, Konstanten und Variablen

In diesem Beispiel wird LEAST verwendet, um den minimalen Wert in einer Liste zu ermitteln, die Spalten, Konstanten und Variablen beinhaltet.

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

Hier ist das Resultset.

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

(3 rows affected)