Logische Funktionen – LEAST (Transact-SQL)
Gilt für: SQL Server 2022 (16.x) Azure SQL-Datenbank Azure SQL verwaltete Instanz Azure Synapse Analytics SQL Analytics-Endpunkt in Microsoft Fabric Warehouse in Microsoft Fabric 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 LEAST
NULL
zurück.
Der Vergleich von Zeichenargumenten folgt den Regeln der Sortierungsrangfolge (Transact-SQL).
Die folgenden Typen werden für Vergleiche in LEAST
nicht 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 sehen Sie das Ergebnis.
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 sehen Sie das Ergebnis.
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 sehen Sie das Ergebnis. 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 sehen Sie das Ergebnis. 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 sehen Sie das Ergebnis.
VarX Correlation LeastVar
---------- --------------------- ---------------------
Var1 0.200 0.200
Var2 0.825 0.590
Var3 0.610 0.590
(3 rows affected)