CASE (SQL Server Compact)

Evalúa una lista de condiciones y devuelve una de las varias expresiones de resultado posibles.

CASE tiene dos formatos:

  • La función CASE simple compara una expresión con un conjunto de expresiones simples para determinar el resultado.

  • La función CASE buscada evalúa un conjunto de expresiones booleanas para determinar el resultado.

Ambos formatos admiten un argumento ELSE opcional.

Sintaxis

CASE input_expression 
    WHEN when_expression THEN result_expression 
        [ ...n ] 
    [ 
        ELSE else_result_expression 
    ] 
END 

CASE
    WHEN Boolean_expression THEN result_expression 
        [ ...n ] 
    [ 
        ELSE else_result_expression 
    ] 
END

Argumentos

  • input_expression
    Expresión evaluada cuando se utiliza el formato CASE simple. El argumento input_expression es cualquier expresión válida en Microsoft SQL Server Compact 3.5.

  • WHEN when_expression
    Expresión simple con la que se compara input_expression cuando se utiliza el formato CASE simple. El argumento when_expression es cualquier expresión válida en SQL Server. Los tipos de datos de input_expression y cada when_expression deben ser iguales o se deben convertir implícitamente.

  • n
    Marcador de posición que indica que se pueden utilizar varias cláusulas WHEN when_expression THEN result_expression, o bien varias cláusulas WHEN Boolean_expression THEN result_expression.

  • THEN result_expression
    Expresión que se devuelve cuando input_expression es igual a when_expression toma el valor TRUE o cuando Boolean_expression toma el valor TRUE. El argumento result_expression es cualquier expresión válida en SQL Server.

  • ELSE else_result_expression
    Expresión que se devuelve si ninguna operación de comparación toma el valor TRUE. Si se omite este argumento y ninguna operación de comparación toma el valor TRUE, CASE devuelve NULL. El argumento else_result_expression es cualquier expresión válida en SQL Server. Los tipos de datos de else_result_expression y cualquier result_expression deben ser iguales o se deben convertir implícitamente.

  • WHEN Boolean_expression
    Expresión booleana evaluada cuando se utiliza el formato CASE buscado. Boolean_expression es cualquier expresión booleana válida.

Tipos de resultado

Devuelve el tipo de precedencia más alto del conjunto de tipos de result_expressions y la expresión else_result_expression opcional.

Valor devuelto

Función CASE simple:

  • Evalúa input_expression y, a continuación, en el orden especificado, evalúa input_expression = when_expression para cada cláusula WHEN.

  • Devuelve la expresión result_expression de la primera (input_expression = when_expression) que toma el valor TRUE.

  • Si no hay ninguna expresión input_expression = when_expression que tome el valor TRUE, se devolverá else_result_expression si se especifica una cláusula ELSE, o bien NULL si no se especifica ninguna cláusula ELSE.

Función CASE buscada:

  • Evalúa, en el orden especificado, la expresión Boolean_expressionpara cada cláusula WHEN.

  • Devuelve la expresión result_expression de la primera Boolean_expression que toma el valor TRUE.

  • Si no hay ninguna expresión Boolean_expression que tome el valor TRUE, se devolverá else_result_expression si se especifica una cláusula ELSE, o bien NULL si no se especifica ninguna cláusula ELSE.

Ejemplo

En el ejemplo siguiente, se devuelve el modo de envío utilizado para los pedidos realizados.

SELECT [Ship Via], CASE [Ship Via]
    WHEN 1 THEN 'A.Datum'
    WHEN 2 THEN 'Contoso'
    WHEN 3 THEN 'Consolidated Messenger'
        ELSE 'Unknown'
        END
FROM Orders