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 像索引一样进入数组中,其中,数组由跟在索引参数之后的各参数组成。 索引参数确定将返回以下哪些值。
示例
下面的示例从所提供的值列表中返回第三项。
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