Логические функции — CHOOSE (Transact-SQL)
Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure
Возвращает элемент по указанному индексу из списка значений в SQL Server.
Соглашения о синтаксисе Transact-SQL
Синтаксис
CHOOSE ( index, val_1, val_2 [, val_n ] )
Аргументы
index
Целочисленное выражение, которое представляет отсчитываемый от 1 индекс в списке элементов, следующих за ним.
Если указанное значение индекса имеет числовой тип, отличный от типа int, то значение неявно преобразуется в целое. Если значение индекса выходит за границы массива значений, то инструкция CHOOSE возвращает значение NULL.
val_1 ... val_n
Список значений любого типа данных с разделителями-запятыми.
Типы возвращаемых данных
Возвращает тип данных с наивысшим приоритетом из переданного функции набора типов. Дополнительные сведения см. в разделе Приоритет типов данных (Transact-SQL).
Замечания
Инструкция CHOOSE действует подобно индексу массива, где массив состоит из следующих за аргументом индекса аргументов. Аргумент индекса определяет, какие из следующих за ним значений будут возвращены.
Примеры
А. Простой пример функции 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)
В. 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)