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 像索引一样进入数组中,其中,数组由跟在索引参数之后的各参数组成。 索引参数确定将返回以下哪些值。

示例

下面的示例从所提供的值列表中返回第三项。

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)

以下示例返回雇佣员工的季度。 MONTH 函数用于从 HireDate 列返回月份值。

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)