CHOOSE (Transact-SQL)
说明:
从SQL Server的值列表中返回指定索引处的项目。
语法:
CHOOSE ( index, val_1, val_2 [, val_n ] )
参数:
index
是一个整数表达式,表示指向其后的项列表的基于1的索引。
如果提供的索引值具有非int的数字数据类型,则该值将隐式转换为整数。
如果索引值超出值数组的范围,则CHOOSE返回null。
val_1 ... val_n
任何数据类型的逗号分隔值列表。
返回:
从传递给函数的类型集中返回优先级最高的数据类型
例子:
USE [daniel_test_db];
GO
/******************************************************************
*DESCRIPTION : 创建表
*CREATE DATE : 2020/07/20
*AUTHOR : yuan lau
********************************************************************/
CREATE TABLE [dbo].[t_yuan_lau_choose] ([NationalIDNumber] [BIGINT] NOT NULL PRIMARY KEY,
[LoginID] [NVARCHAR](255) NOT NULL,
[JobTitle] [NVARCHAR](255) NOT NULL,
[BirthDate] [DATE] NOT NULL,
[Gender] [CHAR](1) NOT NULL,
[HireDate] [DATE] NOT NULL, );
GO
/******************************************************************
*DESCRIPTION : 插入测试数据
*CREATE DATE : 2020/07/20
*AUTHOR : yuan lau
********************************************************************/
INSERT dbo.t_yuan_lau_choose (NationalIDNumber,
LoginID,
JobTitle,
BirthDate,
Gender,
HireDate)
VALUES (295847284, N'adventure-works\ken0', N'Chief Executive', '1969/01/29', 'F', '2009/01/14'),
(245797967, N'adventure-works\terri0', N'Vice President of Engineering', '1971/08/01', 'F', '2008/01/31'),
(509647174, N'adventure-works\roberto0', N'Engineering Manager', '1974/11/12', 'M', '2007/11/11'),
(112457891, N'adventure-works\rob0', N'Senior Tool Designer', '1974/12/23', 'M', '2007/12/05'),
(695256908, N'adventure-works\gail0', N'Design Engineer', '1952/09/27', 'F', '2008/01/06'),
(998320692, N'adventure-works\jossef0', N'Design Engineer', '1959/03/11', 'M', '2008/01/24'),
(134969118, N'adventure-works\dylan0', N'Research and Development Manager', '1987/02/24', 'M', '2009/02/08'),
(811994146, N'adventure-works\diane1', N'Research and Development Engineer', '1986/06/05', 'F', '2008/12/29'),
(658797903, N'adventure-works\gigi0', N'Research and Development Engineer', '1979/01/21', 'F', '2009/01/16'),
(879342154, N'adventure-works\michale6', N'Research and Development Manager', '1984/11/30', 'M', '2009/05/03');
SELECT [NationalIDNumber],
[LoginID],
[JobTitle],
[BirthDate],
Birth_Month = CHOOSE(
MONTH([BirthDate]),
'January',
'February',
'March',
'April',
'May',
'June',
'July',
'August',
'September',
'October',
'November',
'December'),
[Gender],
[HireDate],
Hire_Month = CHOOSE(
DATEPART(MM, [HireDate]),
'January',
'February',
'March',
'April',
'May',
'June',
'July',
'August',
'September',
'October',
'November',
'December')
FROM dbo.t_yuan_lau_choose;
备注:
CHOOSE的行为就像是数组的索引,该数组由跟随index参数的参数组成。index参数确定将返回以下哪个值。