Delen via


Logische functies - LEAST (Transact-SQL)

Van toepassing op: SQL Server 2022 (16.x) en latere versies Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSQL database in Microsoft Fabric

Deze functie geeft de minimale waarde terug uit een lijst van één of meer expressies.

Transact-SQL syntaxis-conventies

Syntaxis

LEAST ( expression1 [ , ...expressionN ] )

Arguments

expressie1, expressieN

Een lijst van komma-gescheiden expressies van elk vergelijkbaar datatype. De LEAST functie vereist ten minste één argument en ondersteunt niet meer dan 254 argumenten.

Elke expressie kan een constante, variabele, kolomnaam of functie zijn, en elke combinatie van rekenkundige, bitgewijze en stringoperatoren. Aggregate functies en scalaire subqueries zijn toegestaan.

Retourtypen

Geeft het datatype met de hoogste prioriteit terug uit de set types die aan de functie zijn doorgegeven. Zie prioriteit voor gegevenstypen (Transact-SQL) voor meer informatie.

Als alle argumenten hetzelfde datatype hebben en het type wordt ondersteund voor vergelijking, LEAST geeft dat type terug.

Anders zal de functie impliciet alle argumenten omzetten naar het datatype met de hoogste rang vóór de vergelijking en dit type als retourtype gebruiken.

Voor numerieke types is de schaal van het retourtype hetzelfde als het hoogste prioriteitsargument, of de grootste schaal als meer dan één argument het hoogste prioriteitsdatatype heeft.

Opmerkingen

Alle expressies in de lijst van argumenten moeten van een vergelijkbaar datatype zijn en dat impliciet kan worden omgezet naar het datatype van het argument met de hoogste prioriteit.

Impliciete conversie van alle argumenten naar het datatype met hoogste prioriteit vindt plaats vóór de vergelijking.

Als impliciete typeconversie tussen de argumenten niet wordt ondersteund, zal de functie falen en een foutmelding geven.

Voor meer informatie over impliciete en expliciete conversie, zie Data Type Conversion (Database Engine).

Als één of meer argumenten dat niet NULLzijn, worden NULL argumenten genegeerd tijdens de vergelijking. Als alle argumenten zijn NULL, dan LEAST geeft NULL.

Vergelijking van karakterargumenten volgt de regels van Collation Precedence (Transact-SQL).

De volgende typen worden niet ondersteund voor vergelijking in LEAST: varchar(max),varbinary(max) of nvarchar(max) met meer dan 8.000 bytes, cursor, geometrie, geografie, afbeelding, niet-byte-geordende door de gebruiker gedefinieerde types, ntext, tabel, tekst en xml.

De datatypes varchar(max), varbinary(max) en nvarchar(max) worden ondersteund voor argumenten van 8.000 bytes of minder, en worden respectievelijk impliciet omgezet naar varchar(n),varbinary(n) en nvarchar(n), respectievelijk vóór de vergelijking.

Bijvoorbeeld, varchar(max) kan tot 8.000 tekens ondersteunen als er een single-byte coderingstekenset wordt gebruikt, en nvarchar(max) kan tot 4.000 byte-paren ondersteunen (ervan uitgaande UTF-16 tekencodering).

Voorbeelden

Eén. Geef de minimale waarde terug uit een lijst van constanten

Het volgende voorbeeld geeft de minimale waarde terug uit de lijst met constanten die wordt gegeven.

De schaal van het retourtype wordt bepaald door de schaal van het argument met het datatype met de hoogste prioriteit.

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

Hier is het resultatenoverzicht.

LeastVal
-------
 3.1415

(1 rows affected)

B. Geef de minimale waarde terug uit een lijst van tekentypes

Het volgende voorbeeld geeft de minimale waarde terug uit de lijst met karakterconstanten die is gegeven.

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

Hier is het resultatenoverzicht.

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

(1 rows affected)

C. Geef de minimale waarde terug uit een lijst van kolomargumenten

Dit voorbeeld geeft de minimale waarde terug uit een lijst met kolomargumenten en negeert NULL waarden tijdens de vergelijking. Dit voorbeeld gebruikt de AdventureWorksLT database, die snel kan worden geïnstalleerd als voorbeelddatabase voor een nieuwe Azure SQL-database. Zie AdventureWorks-voorbeelddatabasesvoor meer informatie.

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 is het resultatenoverzicht. EarliestDate kiest de kleinste datumwaarde van de drie waarden en negeert 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. Gebruik LEAST met lokale variabelen

Dit voorbeeld wordt gebruikt LEAST om de minimale waarde van een lijst van lokale variabelen binnen het predicaat van een WHERE clausule te bepalen.

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 is het resultatenoverzicht. Alleen waarden kleiner dan 0,65 worden weergegeven.

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

(2 rows affected)

E. Gebruik LEAST met kolommen, constanten en variabelen

Dit voorbeeld wordt gebruikt LEAST om de minimale waarde van een lijst te bepalen die kolommen, constanten en variabelen bevat.

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 is het resultatenoverzicht.

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

(3 rows affected)