Udostępnij za pomocą


Funkcje logiczne - NAJMNIEJSZA (Transact-SQL)

Dotyczy do: SQL Server 2022 (16.x) i nowsze wersje Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSQL database in Microsoft Fabric

Funkcja ta zwraca minimalną wartość z listy jednego lub więcej wyrażeń.

Transact-SQL konwencje składni

Składnia

LEAST ( expression1 [ , ...expressionN ] )

Arguments

wyraz1, wyrażenieN

Lista wyrażeń oddzielonych przecinkami dowolnego porównywalnego typu danych. Funkcja wymaga LEAST co najmniej jednego argumentu i obsługuje nie więcej niż 254 argumenty.

Każde wyrażenie może być stałą, zmienną, nazwą kolumny lub funkcją oraz dowolną kombinacją operatorów arytmetycznych, bitowych i ciągowych. Dozwolone są funkcje agregacyjne oraz podzapytania skalarne.

Typy zwracane

Zwraca typ danych o najwyższym przykładzie spośród zestawu typów przekazanych funkcji. Aby uzyskać więcej informacji, zobacz pierwszeństwo typu danych (Transact-SQL).

Jeśli wszystkie argumenty mają ten sam typ danych i typ jest wspierany do porównania, LEAST zwraca ten typ.

W przeciwnym razie funkcja domyślnie przekształci wszystkie argumenty na typ danych o najwyższym pierwszeństwie przed porównaniem i użyje tego typu jako typu zwrotu.

Dla typów numerycznych skala typu zwrotu będzie taka sama jak argument o najwyższym precedensie, lub największa skala, jeśli więcej niż jeden argument dotyczy najwyższego typu danych o najwyższym precedensie.

Uwagi

Wszystkie wyrażenia na liście argumentów muszą mieć typ danych porównywalny i który można domyślnie przekształcić na typ danych argumentu o najwyższym pierwszeństwie.

Przed porównaniem następuje niejawna konwersja wszystkich argumentów na typ danych o najwyższym precedensie.

Jeśli nie jest obsługiwana niejawna konwersja typów między argumentami, funkcja zawiodła i zwróciła błąd.

Więcej informacji na temat konwersji ukrytej i jawnej można znaleźć w artykule Konwersja typów danych (Database Engine).

Jeśli jeden lub więcej argumentów nie NULLjest , to NULL argumenty są ignorowane podczas porównania. Jeśli wszystkie argumenty są , NULLto LEAST zwraca NULL.

Porównywanie argumentów charakterowych opiera się na zasadach Precedencji Kolacji (Transact-SQL).

Następujące typy nie są obsługiwane do porównania w LEAST: varchar(max),varbinary(max) lub nvarchar(max) przekraczających 8 000 bajtów, kursorach, geometrii, geografii, obrazach, typach zdefiniowanych przez użytkownika nieuporządkowanych bajtami, ntext, tabeli, tekstie oraz xml.

Typy danych varchar(max),varbinary(max) i nvarchar(max) są obsługiwane dla argumentów o rozmiarze 8 000 bajtów lub mniejszych i zostaną niejawnie przekształcone odpowiednio w varchar(n),varbinary(n) i nvarchar(n) przed porównaniem.

Na przykład varchar(max) może obsługiwać do 8 000 znaków przy użyciu zestawu znaków kodujących jednobajtowo, a nvarchar(max) może obsługiwać do 4 000 par bajtów (zakładając kodowanie znaków UTF-16).

Przykłady

A. Zwróć wartość minimalną z listy stałych

Poniższy przykład zwraca minimalną wartość z listy stałych, która jest podana.

Skala typu zwrotu jest określana przez skalę argumentu o najwyższym przykładzie danych o najwyższym prezencji.

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

Oto zestaw wyników.

LeastVal
-------
 3.1415

(1 rows affected)

B. Zwróć wartość minimalną z listy typów znaków

Poniższy przykład zwraca minimalną wartość z listy stałych znaków, która jest dostarczana.

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

Oto zestaw wyników.

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

(1 rows affected)

C. Zwróć wartość minimalną z listy argumentów kolumn

Ten przykład zwraca minimalną wartość z listy argumentów kolumnowych i ignoruje NULL wartości podczas porównania. Ten przykład wykorzystuje bazę AdventureWorksLT danych, którą można szybko zainstalować jako przykładową bazę danych dla nowej bazy Azure SQL. Aby uzyskać więcej informacji, zobacz przykładowe bazy danych 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;

Oto zestaw wyników. EarliestDate wybiera najmniejszą wartość datową spośród trzech wartości, ignorując 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. Zastosowanie LEAST z lokalnymi zmiennymi

Ten przykład służy LEAST do określenia minimalnej wartości listy zmiennych lokalnych w orzeczeniu klauzuli 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

Oto zestaw wyników. Wyświetlane są tylko wartości poniżej 0,65.

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

(2 rows affected)

E. Użycie LEAST z kolumnami, stałymi i zmiennymi

Ten przykład służy LEAST do określenia minimalnej wartości listy zawierającej kolumny, stałe i zmienne.

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

Oto zestaw wyników.

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

(3 rows affected)