逻辑函数 - CHOOSE (Transact-SQL)
适用于: SQL Server Azure SQL 数据库 Azure SQL 托管实例
在 SQL Server 中从值列表返回指定索引处的项。
语法
CHOOSE ( index, val_1, val_2 [, val_n ] )
参数
index
一个整数表达式,表示其后的项列表的从 1 开始的索引。
如果提供的索引值具有 int 之外的数值数据类型,则该值将隐式转换为整数。 如果索引值超出了值数组的界限,则 CHOOSE 返回 Null。
val_1 … val_n
任何数据类型的逗号分隔的值列表。
返回类型
从传递到函数的类型集中返回优先级最高的数据类型。 有关详细信息,请参阅数据类型优先级 (Transact-SQL)。
备注
CHOOSE 像索引一样进入数组中,其中,数组由跟在索引参数之后的各参数组成。 索引参数确定将返回以下哪些值。
示例
A. 简单的 CHOOSE 示例
下面的示例从所提供的值列表中返回第三项。
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 配合使用 CHOOSE 和 MONTH
以下示例返回上次修改产品型号时的季节。 MONTH
函数用于从 ModifiedDate
列返回月份值。 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)