論理関数 - CHOOSE (Transact-SQL)

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

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

Transact-SQL 構文表記規則

構文

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

Note

SQL Server 2014 (12.x) 以前のバージョンの 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 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)

次のステップ