邏輯函式 - CHOOSE (Transact-SQL)

適用於:SQL ServerAzure SQL DatabaseAzure SQL 受控執行個體

在 SQL Server 中從數值清單傳回指定之索引的項目。

Transact-SQL 語法慣例

Syntax

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

注意

若要檢視 SQL Server 2014 (12.x) 和舊版的 Transact-SQL 語法,請參閱 舊版檔

引數

index

表示以 1 為基底之索引到其後之項目清單中的整數運算式。

如果已提供的索引值具有數值資料類型,而非 int,則此數值會隱含地轉換成整數。 如果索引值超過數值陣列的界限,則 CHOOSE 會傳回 null。

val_1 ... val_n

任何資料類型的逗號分隔值清單。

傳回型別

從通過功能的類型集中,傳回優先順序最高的資料類型。 如需詳細資訊,請參閱資料類型優先順序 (Transact-SQL)

備註

CHOOSE 作用類似陣列中的索引,其中的陣列是由跟隨索引引數的引數所組成。 其中 time-precision 引數會決定傳回值的秒數有效位數。

範例

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 函式是用來指派北半球季節。 此範例會使用 AdventureWorksLT 資料庫,該資料庫可快速安裝為新 Azure SQL Database 的範例資料庫。 如需詳細資訊,請參閱 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)

後續步驟