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