論理関数 - CHOOSE (Transact-SQL)

適用対象: はいSQL Server (サポートされているすべてのバージョン) はいAzure SQL データベース はいAzure SQL Managed Instance

SQL Server の値の一覧から指定されたインデックスにある項目を返します。

トピック リンク アイコン Transact-SQL 構文表記規則

構文

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

注意

SQL Server 2014 以前の Transact-SQL 構文を確認するには、以前のバージョンのドキュメントを参照してください。

引数

インデックス
後に続く項目のリストへの 1 から始まるインデックスを表す整数式を指定します。

入力されたインデックス値が int 以外の数値データ型である場合、暗黙的に値が整数に変換されます。 インデックス値が値の配列の境界を超えると、CHOOSE は NULL を返します。

val_1 ... val_n
任意のデータ型のコンマ区切り値のリスト。

戻り値の型

関数に渡される一連の型の中から最も優先順位の高いデータ型を返します。 詳細については、「データ型の優先順位 (Transact-SQL)」を参照してください。

注釈

CHOOSE は、配列へのインデックスと同じように機能します。ここで、配列はインデックス引数の後に続く引数で構成されます。 インデックス引数は、後続の値のうちどの値が返されるのかを決定します。

A. 単純な CHOOSE の例

次の例では、入力される値のリストの 3 番目の項目が返されます。

SELECT CHOOSE ( 3, 'Manager', 'Director', 'Developer', 'Tester' ) AS Result;  

結果セットは次のようになります。

Result  
-------------  
Developer  
  
(1 row(s) affected)  

B. 列に基づく単純な CHOOSE の例

次の例では、ProductCategoryID 列の値に基づく単純な文字列が返されます。

USE AdventureWorks2012;  
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

次の例では、従業員が採用された季節が返されます。 HireDate 列から月の値を返すために MONTH 関数が使用されています。

USE AdventureWorks2012;  
GO  
SELECT JobTitle, HireDate, CHOOSE(MONTH(HireDate),'Winter','Winter', 'Spring','Spring','Spring','Summer','Summer',   
                                                  'Summer','Autumn','Autumn','Autumn','Winter') AS Quarter_Hired  
FROM HumanResources.Employee  
WHERE  YEAR(HireDate) > 2005  
ORDER BY YEAR(HireDate);  
  

結果セットは次のようになります。

JobTitle                                           HireDate   Quarter_Hired  
-------------------------------------------------- ---------- -------------  
Sales Representative                               2006-11-01 Autumn  
European Sales Manager                             2006-05-18 Spring  
Sales Representative                               2006-07-01 Summer  
Sales Representative                               2006-07-01 Summer  
Sales Representative                               2007-07-01 Summer  
Pacific Sales Manager                              2007-04-15 Spring  
Sales Representative                               2007-07-01 Summer  
  

関連項目

IIF (Transact-SQL)