論理関数 - CHOOSE (Transact-SQL)
適用対象: SQL Server Azure SQL Database Azure SQL Managed Instance
SQL Server の値の一覧から指定されたインデックスにある項目を返します。
構文
CHOOSE ( index, val_1, val_2 [, val_n ] )
引数
インデックス
後に続く項目のリストへの 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 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
次の例では、製品モデルが最後に変更された季節が返されます。 ModifiedDate
列から月の値を返すために MONTH
関数が使用されています。 CHOOSE
関数は、北半球の季節を割り当てるために使用されます。 このサンプルでは、AdventureWorksLT
データベースを使用します。これは、新しい Azure SQL データベースのサンプル データベースとしてすばやくインストールできます。 詳細については、「AdventureWorks sample databases」 (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)