Logiska funktioner - MINST (Transact-SQL)

Gäller för: SQL Server 2022 (16.x) och senare versioner Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSQL database in Microsoft Fabric

Denna funktion returnerar minimivärdet från en lista med ett eller flera uttryck.

Transact-SQL syntaxkonventioner

Syntax

LEAST ( expression1 [ , ...expressionN ] )

Arguments

uttryck1, uttryckN

En lista över kommaseparerade uttryck av någon jämförbar datatyp. Funktionen LEAST kräver minst ett argument och stöder högst 254 argument.

Varje uttryck kan vara en konstant, variabel, kolumnnamn eller funktion, samt en kombination av aritmetik-, bit- och strängoperatorer. Aggregerade funktioner och skalära delfrågor är tillåtna.

Returtyper

Returnerar datatypen med högst prioritet från mängden av typer som skickats till funktionen. Mer information finns i Data Type Precedence (Transact-SQL).

Om alla argument har samma datatyp och typen stöds för jämförelse, LEAST returnerar den typen.

Annars kommer funktionen implicit att konvertera alla argument till datatypen med högst prioritet före jämförelse och använda denna typ som returtyp.

För numeriska typer kommer skalan för returtypen att vara densamma som för argumentet med högst prioritet, eller den största skalan om mer än ett argument har datatypen med högst prioritet.

Anmärkningar

Alla uttryck i argumentlistan måste vara av en datatyp som är jämförbar och som implicit kan konverteras till datatypen för argumentet med högst prioritet.

Implicit konvertering av alla argument till datatypen med högst prioritet sker före jämförelse.

Om implicit typkonvertering mellan argumenten inte stöds, kommer funktionen att misslyckas och ge ett fel.

För mer information om implicit och explicit konvertering, se Data Type Conversion (Database Engine).

Om ett eller flera argument inte NULLär det, ignoreras NULL argument under jämförelsen. Om alla argument är NULL, så LEAST returnerar NULL.

Jämförelse av karaktärsargument följer reglerna för Collation Precedence (Transact-SQL).

Följande typer stöds inte för jämförelse iLEAST: varchar(max), varbinary(max) eller nvarchar(max) som överstiger 8 000 byte, markör, geometri, geografi, bild, icke-byteordnade användardefinierade typer, ntext, tabell, text och xml.

Datatyperna varchar(max), varbinary(max) och nvarchar(max) stöds för argument som är 8 000 byte eller mindre, och kommer implicit att konverteras till varchar(n),varbinary(n) respektive nvarchar(n) innan jämförelse.

Till exempel kan varchar(max) stödja upp till 8 000 tecken om man använder en enbyte-kodningsteckenuppsättning, och nvarchar(max) kan stödja upp till 4 000 bytepar (förutsatt UTF-16-teckenkodning).

Examples

A. Returnera minimivärdet från en lista med konstanter

Följande exempel återger det minsta värdet från listan över konstanter som tillhandahålls.

Skalan för returtypen bestäms av skalan för argumentet med högst prioritet på datatypen.

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

Här är resultatet.

LeastVal
-------
 3.1415

(1 rows affected)

B. Returnera minsta värde från en lista med teckentyper

Följande exempel returnerar det minsta värdet från listan över teckenkonstanter som tillhandahålls.

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

Här är resultatet.

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

(1 rows affected)

C. Returnera minimivärdet från en lista med kolumnargument

Detta exempel returnerar minimivärdet från en lista med kolumnargument och ignorerar NULL värden under jämförelsen. Detta exempel använder databasen AdventureWorksLT , som snabbt kan installeras som exempeldatabas för en ny Azure SQL-databas. Mer information finns i AdventureWorks-exempeldatabaser.

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;

Här är resultatet. EarliestDate väljer det minsta datumvärdet av de tre värdena, och ignorerar 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. Användning LEAST med lokala variabler

Detta exempel används LEAST för att bestämma minimivärdet för en lista av lokala variabler inom predikatet till en WHERE klausul.

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

Här är resultatet. Endast värden under 0,65 visas.

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

(2 rows affected)

E. Användning LEAST med kolumner, konstanter och variabler

Detta exempel används LEAST för att bestämma minimivärdet för en lista som inkluderar kolumner, konstanter och variabler.

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

Här är resultatet.

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

(3 rows affected)