Логические функции — CHOOSE (Transact-SQL)

Область применения:yesSQL Server (все поддерживаемые версии) YesБаза данных SQL Azure YesУправляемый экземпляр SQL Azure

Возвращает элемент по указанному индексу из списка значений в SQL Server.

Topic link iconСинтаксические обозначения в Transact-SQL

Синтаксис

CHOOSE ( index, val_1, val_2 [, val_n ] )  

Примечание

Ссылки на описание синтаксиса Transact-SQL для SQL Server 2014 и более ранних версий, см. в статье Документация по предыдущим версиям.

Аргументы

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)  

Б. Простой пример функции CHOOSE на основе столбца

В следующем примере возвращается простая символьная строка на основании значения в столбце 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)  
  

В. CHOOSE в сочетании с MONTH

В следующем примере возвращается время года последнего изменения модели продукта. Функция MONTH используется, чтобы вернуть значение месяца из столбца ModifiedDate. Функция CHOOSE используется для назначения времени года в Северном полушарии. В этом примере используется база данных AdventureWorksLT, которую можно быстро установить в качестве образца базы данных для нового экземпляра Базы данных SQL Azure. Дополнительные сведения см. в разделе Образцы баз данных 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)

Дальнейшие действия