Funciones lógicas - CHOOSE (Transact-SQL)

Se aplica a:SQL ServerAzure SQL DatabaseAzure 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 ] )  

Nota:

Para ver la sintaxis de Transact-SQL para SQL Server 2014 (12.x) y versiones anteriores, consulte Versiones anteriores de la documentació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;  

El conjunto de resultados es el siguiente:

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;  

El conjunto de resultados es el siguiente:

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;  

El conjunto de resultados es el siguiente:

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)

Pasos siguientes