논리 함수 - LEAST(Transact-SQL)

적용 대상: Microsoft Fabric의 Microsoft FabricWarehouse에 있는 SQL Server 2022(16.x) Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSQL 분석 엔드포인트

이 함수는 하나 이상의 식 목록에서 최솟값을 반환합니다.

Transact-SQL 구문 표기 규칙

구문

LEAST ( expression1 [ , ...expressionN ] )

인수

expression1, expressionN

비교 가능한 모든 데이터 형식의 쉼표로 구분된 식 목록입니다. LEAST 함수에는 인수가 하나 이상 필요하며 이 함수는 인수를 254개 이하로 지원합니다.

각 식은 상수, 변수, 열 이름 또는 함수와 산술, 비트, 문자열 연산자의 조합일 수 있습니다. 집계 함수와 스칼라 하위 쿼리는 허용되지 않습니다.

반환 형식

함수에 전달된 형식 집합 중에서 우선 순위가 가장 높은 데이터 형식을 반환합니다. 자세한 내용은 데이터 형식 우선 순위(Transact-SQL)를 참조하세요.

모든 인수의 데이터 형식이 동일하고 형식이 비교 LEAST 에 지원되는 경우 해당 형식을 반환합니다.

그렇지 않으면 함수는 비교하기 전에 모든 인수를 우선 순위가 가장 높은 데이터 형식으로 암시적으로 변환한 후 이 형식을 반환 형식으로 사용합니다.

숫자 형식의 경우 반환 형식의 소수 자릿수는 우선 순위가 가장 높은 인수와 같거나, 둘 이상의 인수가 우선 순위가 가장 높은 데이터 형식인 경우 가장 큰 소수 자릿수가 됩니다.

설명

인수 목록에 있는 모든 식은 비교 가능하고 우선 순위가 가장 높은 인수의 데이터 형식으로 암시적으로 변환될 수 있는 데이터 형식이어야 합니다.

모든 인수를 우선 순위가 가장 높은 데이터 형식으로 암시적으로 변환하는 작업은 비교 전에 수행됩니다.

인수 간의 암시적 형식 변환이 지원되지 않으면 함수가 실패하고 오류가 반환됩니다.

암시적 및 명시적 데이터 변환에 대한 자세한 내용은 데이터 형식 변환(데이터베이스 엔진)을 참조하세요.

하나 이상의 인수가 없 NULLNULL 으면 비교하는 동안 인수가 무시됩니다. 모든 인수가 있으면 NULL.를 LEAST 반환합니다 NULL.

문자 인수 비교는 데이터 정렬 우선 순위(Transact-SQL)의 규칙을 따릅니다.

다음 형식은 varchar(max), varbinary(max) 또는 nvarchar(max)가 8,000바이트, 커서, 기하 도형, 지리, 이미지, 비바이트 순서 사용자 정의 형식, ntext, 테이블, 텍스트xml을 초과하는 비교LEAST에 지원되지 않습니다.

varchar(max), varbinary(max)nvarchar(max) 데이터 형식은 8,000바이트 이하인 인수에 대해 지원되며 비교 전에 각각 varchar(n), varbinary(n)nvarchar(n)로 암시적으로 변환됩니다.

예를 들어 단일 바이트 인코딩 문자 집합을 사용하는 경우 varchar(max) 는 최대 8,000자를 지원할 수 있으며 nvarchar(max) 는 최대 4,000바이트 쌍(UTF-16 문자 인코딩 가정)을 지원할 수 있습니다.

예제

A. 상수 목록에서 최소값 반환

다음 예에서는 제공된 상수 목록의 최솟값을 반환합니다.

반환 형식의 소수 자릿수는 우선 순위가 가장 높은 데이터 형식의 인수 소수 자릿수에 따라 결정됩니다.

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

결과 집합은 다음과 같습니다.

LeastVal
-------
 3.1415

(1 rows affected)

B. 문자 형식 목록에서 최소값 반환

다음 예에서는 제공된 문자 상수 목록의 최솟값을 반환합니다.

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

결과 집합은 다음과 같습니다.

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

(1 rows affected)

C. 열 인수 목록에서 최소값 반환

이 예에서는 열 인수 목록의 최솟값을 반환하고 비교 중에 NULL 값을 무시합니다. 이 샘플에서는 새 Azure SQL Database에 대한 샘플 데이터베이스로 빠르게 설치할 수 있는 AdventureWorksLT 데이터베이스를 사용합니다. 자세한 내용은 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;

결과 집합은 다음과 같습니다. EarliestDateNULL을 무시하면서 세 값 중 가장 작은 날짜 값을 선택합니다.

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. 지역 변수와 함께 사용 LEAST

이 예에서는 LEAST를 사용하여 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

결과 집합은 다음과 같습니다. 0.65보다 작은 값만 표시됩니다.

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

(2 rows affected)

E. 열, 상수 및 변수와 함께 사용 LEAST

이 예에서는 LEAST를 사용하여 열, 상수, 변수를 포함하는 목록의 최솟값을 확인합니다.

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

결과 집합은 다음과 같습니다.

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

(3 rows affected)