논리 함수 - CHOOSE(Transact-SQL)
적용 대상: SQL Server Azure SQL 데이터베이스 Azure SQL Managed Instance
SQL Server의 값 목록에서 지정된 인덱스에 있는 항목을 반환합니다.
구문
CHOOSE ( index, val_1, val_2 [, val_n ] )
인수
index
index 인수 다음에 나오는 항목 목록에 대한 1부터 시작하는 인덱스를 나타내는 정수 식입니다.
int 이외의 숫자 데이터 형식으로 된 인덱스 값을 제공할 경우 값이 암시적으로 정수로 변환됩니다. 인덱스 값이 값 배열 한계를 초과하면 CHOOSE는 Null을 반환합니다.
val_1 ... val_n
임의의 데이터 형식으로 된 쉼표로 구분된 값 목록입니다.
반환 형식
함수에 전달된 형식 집합 중에서 우선 순위가 가장 높은 데이터 형식을 반환합니다. 자세한 내용은 데이터 형식 우선 순위(Transact-SQL)를 참조하세요.
설명
CHOOSE는 배열에서 인덱스와 같은 역할을 하며 배열은 index 인수 다음에 나오는 인수로 구성됩니다. index 인수는 다음 중 반환될 값을 결정합니다.
예제
A. 간단한 CHOOSE 예제
다음 예에서는 제공된 값 목록에서 세 번째 항목을 반환합니다.
SELECT CHOOSE ( 3, 'Manager', 'Director', 'Developer', 'Tester' ) AS Result;
결과 집합은 다음과 같습니다.
Result
-------------
Developer
(1 row(s) affected)
B. 열을 기반으로 하는 간단한 CHOOSE 예제
다음 예제에서는 ProductCategoryID
열의 값에 따라 간단한 문자열을 반환합니다.
USE AdventureWorks2022;
GO
SELECT ProductCategoryID, CHOOSE (ProductCategoryID, 'A','B','C','D','E') AS Expression1
FROM Production.ProductCategory;
결과 집합은 다음과 같습니다.
ProductCategoryID Expression1
----------------- -----------
3 C
1 A
2 B
4 D
(4 row(s) affected)
C. MONTH와 조합된 CHOOSE
다음 예제에서는 제품 모델이 마지막으로 수정된 시즌을 반환합니다. MONTH
함수는 ModifiedDate
열에서 월 값을 반환합니다. CHOOSE
함수는 북반구 시즌을 할당하는 데 사용됩니다. 이 샘플에서는 새 Azure SQL Database에 대한 샘플 데이터베이스로 빠르게 설치할 수 있는 AdventureWorksLT
데이터베이스를 사용합니다. 자세한 내용은 AdventureWorks 예제 데이터베이스를 참조하세요.
SELECT Name, ModifiedDate,
CHOOSE(MONTH(ModifiedDate),'Winter','Winter', 'Spring','Spring','Spring','Summer','Summer',
'Summer','Autumn','Autumn','Autumn','Winter') AS Quarter_Modified
FROM SalesLT.ProductModel AS PM
WHERE Name LIKE '%Frame%'
ORDER BY ModifiedDate;
결과 집합은 다음과 같습니다.
Name ModifiedDate Quarter_Modified
--------------------------- ----------------------- ----------------
HL Road Frame 2002-05-02 00:00:00.000 Spring
HL Mountain Frame 2005-06-01 00:00:00.000 Summer
LL Road Frame 2005-06-01 00:00:00.000 Summer
ML Road Frame 2005-06-01 00:00:00.000 Summer
ML Road Frame-W 2006-06-01 00:00:00.000 Summer
ML Mountain Frame 2006-06-01 00:00:00.000 Summer
ML Mountain Frame-W 2006-06-01 00:00:00.000 Summer
LL Mountain Frame 2006-11-20 09:56:38.273 Autumn
HL Touring Frame 2009-05-16 16:34:28.980 Spring
LL Touring Frame 2009-05-16 16:34:28.980 Spring
(10 rows affected)