Fungsi logika - LEAST (Transact-SQL)
Berlaku untuk: Titik akhir analitik SQL Server 2022 (16.x) Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics SQL di Microsoft Fabric Warehouse di Microsoft Fabric
Fungsi ini mengembalikan nilai minimum dari daftar satu atau beberapa ekspresi.
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 set hasilnya.
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 set hasilnya.
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 set hasilnya. 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 set hasilnya. 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 set hasilnya.
VarX Correlation LeastVar
---------- --------------------- ---------------------
Var1 0.200 0.200
Var2 0.825 0.590
Var3 0.610 0.590
(3 rows affected)