Funciones lógicas - CHOOSE (Transact-SQL)Logical Functions - CHOOSE (Transact-SQL)

SE APLICA A: síSQL Server síAzure SQL Database noAzure SQL Data Warehouse noAlmacenamiento de datos paralelos APPLIES TO: yesSQL Server yesAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

Devuelve el elemento en el índice especificado de una lista de valores de SQL ServerSQL Server.Returns the item at the specified index from a list of values in SQL ServerSQL Server.

Icono de vínculo de tema Convenciones de sintaxis de Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintaxisSyntax

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

ArgumentosArguments

indexindex
Expresión entera que representa un índice de base uno de la lista de elementos que le siguen.Is an integer expression that represents a 1-based index into the list of the items following it.

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.If the provided index value has a numeric data type other than int, then the value is implicitly converted to an integer. Si el valor de índice supera los límites de la matriz de valores, CHOOSE devuelve NULL.If the index value exceeds the bounds of the array of values, then CHOOSE returns null.

val_1 … val_nval_1 ... val_n
Lista de valores separados por comas de cualquier tipo de datos.List of comma separated values of any data type.

Tipos devueltosReturn Types

Devuelve el tipo de datos con la mayor prioridad del conjunto de tipos pasados a la función.Returns the data type with the highest precedence from the set of types passed to the function. Para obtener más información, vea Prioridad de tipo de datos (Transact-SQL).For more information, see Data Type Precedence (Transact-SQL).

NotasRemarks

CHOOSE actúa como un índice de una matriz, donde la matriz consta de los argumentos que siguen al argumento de índice.CHOOSE acts like an index into an array, where the array is composed of the arguments that follow the index argument. El argumento de índice determina cuál de los valores siguientes se devolverá.The index argument determines which of the following values will be returned.

EjemplosExamples

A.A. Ejemplo CHOOSE sencilloSimple CHOOSE example

En el ejemplo siguiente se devuelve el tercer elemento de la lista de valores que se proporciona.The following example returns the third item from the list of values that is provided.

SELECT CHOOSE ( 3, 'Manager', 'Director', 'Developer', 'Tester' ) AS Result;  

El conjunto de resultados es el siguiente.Here is the result set.

Result  
-------------  
Developer  
  
(1 row(s) affected)  

B.B. Ejemplo CHOOSE sencillo basado en columnaSimple CHOOSE example based on column

En el ejemplo siguiente se devuelve una cadena de caracteres simple basada en el valor de la columna ProductCategoryID.The following example returns a simple character string based on the value in the ProductCategoryID column.

USE AdventureWorks2012;  
GO  
SELECT ProductCategoryID, CHOOSE (ProductCategoryID, 'A','B','C','D','E') AS Expression1  
FROM Production.ProductCategory;  
  

El conjunto de resultados es el siguiente.Here is the result set.

ProductCategoryID Expression1  
----------------- -----------  
3                 C  
1                 A  
2                 B  
4                 D  
  
(4 row(s) affected)  
  

C.C. CHOOSE en combinación con MONTHCHOOSE in combination with MONTH

El siguiente ejemplo devuelve la temporada en la que se contrató a un empleado.The following example returns the season in which an employee was hired. La función MONTH se usa para devolver el valor de mes de la columna HireDate.The MONTH function is used to return the month value from the column 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);  
  

El conjunto de resultados es el siguiente.Here is the result set.

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  
  

Consulte tambiénSee Also

IIF (Transact-SQL)IIF (Transact-SQL)