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)