Funciones lógicas - CHOOSE (Transact-SQL)
Se aplica a: SQL Server Azure SQL Database Azure SQL Managed Instance
Devuelve el elemento en el índice especificado de una lista de valores de SQL Server.
Convenciones de sintaxis de Transact-SQL
Sintaxis
CHOOSE ( index, val_1, val_2 [, val_n ] )
Argumentos
índice
Expresión entera que representa un índice de base uno de la lista de elementos que le siguen.
Si el valor de índice proporcionado tiene un tipo de datos numérico distinto de int, el valor se convierte implícitamente en un entero. Si el valor de índice supera los límites de la matriz de valores, CHOOSE devuelve NULL.
val_1 … val_n
Lista de valores separados por comas de cualquier tipo de datos.
Tipos de valor devuelto
Devuelve el tipo de datos con la mayor prioridad del conjunto de tipos pasados a la función. Para obtener más información, vea Prioridad de tipo de datos (Transact-SQL).
Comentarios
CHOOSE actúa como un índice de una matriz, donde la matriz consta de los argumentos que siguen al argumento de índice. El argumento de índice determina cuál de los valores siguientes se devolverá.
Ejemplos
A. Ejemplo CHOOSE sencillo
En el ejemplo siguiente se devuelve el tercer elemento de la lista de valores que se proporciona.
SELECT CHOOSE ( 3, 'Manager', 'Director', 'Developer', 'Tester' ) AS Result;
Este es el conjunto de resultados.
Result
-------------
Developer
(1 row(s) affected)
B. Ejemplo CHOOSE sencillo basado en columna
En el ejemplo siguiente se devuelve una cadena de caracteres simple basada en el valor de la columna ProductCategoryID
.
USE AdventureWorks2022;
GO
SELECT ProductCategoryID, CHOOSE (ProductCategoryID, 'A','B','C','D','E') AS Expression1
FROM Production.ProductCategory;
Este es el conjunto de resultados.
ProductCategoryID Expression1
----------------- -----------
3 C
1 A
2 B
4 D
(4 row(s) affected)
C. CHOOSE en combinación con MONTH
En el ejemplo siguiente se devuelve la temporada en la que se modificó por última vez un modelo de producto. La función MONTH
se usa para devolver el valor de mes de la columna ModifiedDate
. La función CHOOSE
se usa para asignar una temporada del hemisferio norte. En este ejemplo se usa la base de datos AdventureWorksLT
, que se puede instalar rápidamente como base de datos de ejemplo para una nueva instancia de Azure SQL Database. Para más información, vea Bases de datos de ejemplo 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;
Este es el conjunto de resultados.
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)