CHOOSE (Transact-SQL)

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

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

構文

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

関連項目

参照

IIF (Transact-SQL)