Fungsi logika - LEAST (Transact-SQL)

Berlaku untuk: Titik akhir analitik SQL Server 2022 (16.x) Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSQL di Microsoft FabricWarehouse di Microsoft Fabric

Fungsi ini mengembalikan nilai minimum dari daftar satu atau beberapa ekspresi.

Konvensi sintaks transact-SQL

Sintaks

LEAST ( expression1 [ , ...expressionN ] )

Argumen

expression1, expressionN

Daftar ekspresi yang dipisahkan koma dari jenis data yang sebanding. Fungsi ini LEAST memerlukan setidaknya satu argumen dan mendukung tidak lebih dari 254 argumen.

Setiap ekspresi dapat berupa konstanta, variabel, nama kolom atau fungsi, dan kombinasi operator aritmatika, bitwise, dan string apa pun. Fungsi agregat dan subkueri skalar diizinkan.

Jenis yang dikembalikan

Mengembalikan tipe data dengan prioritas tertinggi dari kumpulan jenis yang diteruskan ke fungsi. Untuk informasi selengkapnya, lihat Prioritas Tipe Data (Transact-SQL).

Jika semua argumen memiliki jenis data yang sama dan jenisnya didukung untuk perbandingan, LEAST mengembalikan jenis tersebut.

Jika tidak, fungsi akan secara implisit mengonversi semua argumen ke jenis data dengan prioritas tertinggi sebelum perbandingan dan menggunakan jenis ini sebagai jenis pengembalian.

Untuk jenis numerik, skala jenis pengembalian akan sama dengan argumen prioritas tertinggi, atau skala terbesar jika lebih dari satu argumen adalah jenis data prioritas tertinggi.

Keterangan

Semua ekspresi dalam daftar argumen harus dari jenis data yang sebanding dan yang dapat dikonversi secara implisit ke jenis data argumen dengan prioritas tertinggi.

Konversi implisit semua argumen ke jenis data prioritas tertinggi terjadi sebelum perbandingan.

Jika konversi jenis implisit antara argumen tidak didukung, fungsi akan gagal dan mengembalikan kesalahan.

Untuk informasi selengkapnya tentang konversi implisit dan eksplisit, lihat Konversi Tipe Data (Mesin Database).

Jika satu atau beberapa argumen tidak NULL, maka NULL argumen diabaikan selama perbandingan. Jika semua argumen adalah NULL, maka LEAST mengembalikan NULL.

Perbandingan argumen karakter mengikuti aturan Prioritas Kolase (Transact-SQL).

Jenis berikut tidak didukung untuk perbandingan di LEAST: varchar(max), varbinary(max) atau nvarchar(max) melebihi 8.000 byte, kursor, geometri, geografi, gambar, jenis yang ditentukan pengguna yang tidak diurutkan byte, ntext, tabel, teks, dan xml.

Jenis data varchar(max), varbinary(max), dan nvarchar(max) didukung untuk argumen yang masing-masing 8.000 byte atau kurang, dan akan dikonversi secara implisit ke varchar(n), varbinary(n), dan nvarchar(n), sebelum perbandingan.

Misalnya, varchar(max) dapat mendukung hingga 8.000 karakter jika menggunakan set karakter pengodean byte tunggal, dan nvarchar(max) dapat mendukung hingga 4.000 byte-pairs (dengan asumsi pengodean karakter UTF-16).

Contoh

J. Mengembalikan nilai minimum dari daftar konstanta

Contoh berikut mengembalikan nilai minimum dari daftar konstanta yang disediakan.

Skala jenis pengembalian ditentukan oleh skala argumen dengan jenis data prioritas tertinggi.

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

Berikut adalah hasil yang ditetapkan.

LeastVal
-------
 3.1415

(1 rows affected)

B. Mengembalikan nilai minimum dari daftar jenis karakter

Contoh berikut mengembalikan nilai minimum dari daftar konstanta karakter yang disediakan.

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

Berikut adalah hasil yang ditetapkan.

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

(1 rows affected)

C. Mengembalikan nilai minimum dari daftar argumen kolom

Contoh ini mengembalikan nilai minimum dari daftar argumen kolom dan mengabaikan NULL nilai selama perbandingan. Sampel ini menggunakan AdventureWorksLT database, yang dapat dengan cepat diinstal sebagai database sampel untuk Azure SQL Database baru. Untuk informasi selengkapnya, lihat Database sampel 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;

Berikut adalah hasil yang ditetapkan. EarliestDate memilih nilai tanggal paling sedikit dari tiga nilai, mengabaikan 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. Gunakan LEAST dengan variabel lokal

Contoh ini digunakan LEAST untuk menentukan nilai minimum daftar variabel lokal dalam predikat WHERE klausa.

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

Berikut adalah hasil yang ditetapkan. Hanya nilai kurang dari 0,65 yang ditampilkan.

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

(2 rows affected)

E. Gunakan LEAST dengan kolom, konstanta, dan variabel

Contoh ini digunakan LEAST untuk menentukan nilai minimum daftar yang mencakup kolom, konstanta, dan variabel.

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

Berikut adalah hasil yang ditetapkan.

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

(3 rows affected)