CHOOSE (Transact-SQL)
SQL Server 2012 の値の一覧から指定されたインデックスにある項目を返します。
構文
CHOOSE ( index, val_1, val_2 [, val_n ] )
引数
index
後に続く項目のリストへの 1 から始まるインデックスを表す整数式。入力されたインデックス値が int 以外の数値データ型である場合、暗黙的に値が整数に変換されます。 インデックス値が値の配列の境界を超えると、CHOOSE は NULL を返します。
val_1 … val_n
任意のデータ型のコンマ区切り値のリスト。
戻り値の型
関数に渡される一連の型の中から最も優先順位の高いデータ型を返します。 詳細については、「データ型の優先順位 (Transact-SQL)」を参照してください。
説明
CHOOSE は、配列へのインデックスと同じように機能します。ここで、配列はインデックス引数の後に続く引数で構成されます。 インデックス引数は、後続の値のうちどの値が返されるのかを決定します。
使用例
次の例では、入力される値のリストの 3 番目の項目が返されます。
SELECT CHOOSE ( 3, 'Manager', 'Director', 'Developer', 'Tester' ) AS Result;
以下に結果セットを示します。
Result
-------------
Developer
(1 row(s) affected)
次の例では、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)
次の例では、従業員が採用された四半期が返されます。 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