Dela via


CASE (Entitets-SQL)

Utvärderar en uppsättning Boolean uttryck för att fastställa resultatet.

Syntax

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

Argument

n Är en platshållare som anger att flera WHEN THEN-satser Boolean_expression result_expression kan användas.

THEN result_expression Returneras uttrycket när Boolean_expression utvärderas till true. result expression är ett giltigt uttryck.

ELSE else_result_expression Returneras uttrycket om ingen jämförelseåtgärd utvärderas till true. Om det här argumentet utelämnas och ingen jämförelseåtgärd utvärderas till truereturnerar CASE null. else_result_expression är ett giltigt uttryck. Datatyperna för else_result_expression och måste result_expression vara desamma eller vara en implicit konvertering.

WHEN Boolean_expression Utvärderas Boolean uttrycket när det sökta CASE-formatet används. Boolean_expression är ett giltigt Boolean uttryck.

Returvärde

Returnerar den högsta prioritetstypen från uppsättningen med typer i result_expression och den valfria else_result_expression.

Kommentarer

Entitets-SQL-skiftlägesuttrycket liknar transact-SQL-skiftlägesuttrycket. Du använder skiftlägesuttrycket för att göra en serie villkorsstyrda tester för att avgöra vilket uttryck som ska ge lämpligt resultat. Den här formen av skiftlägesuttrycket gäller för en serie med ett eller flera Boolean uttryck för att fastställa rätt resulterande uttryck.

FUNKTIONEN CASE utvärderas för varje WHEN-sats Boolean_expression i den angivna ordningen och returnerar result_expression den första Boolean_expression som utvärderas till true. De återstående uttrycken utvärderas inte. Om inget Boolean_expression utvärderas till truereturnerar else_result_expression databasmotorn om en ELSE-sats har angetts eller ett null-värde om ingen ELSE-sats har angetts.

En CASE-instruktion kan inte returnera en multiuppsättning.

Exempel

Följande SQL-entitetsfråga använder CASE-uttrycket för att utvärdera en uppsättning Boolean uttryck för att fastställa resultatet. Frågan baseras på AdventureWorks försäljningsmodell. Följ dessa steg för att kompilera och köra den här frågan:

  1. Följ proceduren i Så här kör du en fråga som returnerar PrimitiveType-resultat.

  2. Skicka följande fråga som ett argument till ExecutePrimitiveTypeQuery metoden:

CASE WHEN AVG({@score1,@score2,@score3}) < @total THEN TRUE ELSE FALSE END

Se även