논리 함수 - CHOOSE(Transact-SQL)

적용 대상:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

SQL Server의 값 목록에서 지정된 인덱스에 있는 항목을 반환합니다.

Transact-SQL 구문 표기 규칙

Syntax

CHOOSE ( index, val_1, val_2 [, val_n ] )  

참고 항목

SQL Server 2014(12.x) 및 이전 버전에 대한 Transact-SQL 구문을 보려면 이전 버전 설명서를 참조 하세요.

인수

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)

다음 단계