Dela via


CASE (Azure Stream Analytics)

Utvärderar en lista över villkor och returnerar ett av flera möjliga resultatuttryck.

CASE-uttrycket har två format:

  • Det enkla CASE-uttrycket jämför ett uttryck med en uppsättning enkla uttryck för att fastställa resultatet.

  • Det sökta CASE-uttrycket utvärderar en uppsättning booleska uttryck för att fastställa resultatet.

Båda formaten kräver ett ELSE-argument.

CASE kan användas i valfri instruktion eller -sats som tillåter ett giltigt uttryck. Du kan till exempel använda CASE i uttryck som SELECT och i satser som WHERE och HAVING.

Syntax

Enkelt CASE-uttryck:

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

Sökt CASE-uttryck:

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

Argument

input_expression

Utvärderas uttrycket när det enkla CASE-formatet används. Det utvärderade värdet jämförs med when_expression.

NÄR when_expression

Är uttrycket som input_expression jämförs med när du använder det enkla CASE-formatet. Typerna av when_expressions behöver inte nödvändigtvis matcha.

NÄR boolean_expression

Utvärderas det booleska uttrycket när det sökta CASE-formatet används. Om det här uttrycket utvärderas till sant returneras motsvarande result_expression .

SEDAN result_expression

Returneras uttrycket när input_expression är lika med when_expression (i enkelt CASE-format) eller när boolean_expression utvärderas till sant (i det sökta CASE-formatet).

ELSE else_result_expression

Returneras uttrycket om inget av villkoren utvärderas till TRUE.

Returtyp

Är den högsta prioritetstypen från uppsättningen typer i result_expression och else_result_expression.

Exempel

Använda select med ett enkelt CASE-uttryck:

  SELECT
    CASE vehicleType
      WHEN 'S' THEN 'Sedan'
      WHEN 'T' THEN 'Truck'
      WHEN 'V' THEN 'Van'
      ELSE NULL
    END as vehicleTypeName
  FROM vehicles

Använda select med sökda CASE-uttryck:

  SELECT
    CASE
      WHEN temperature < 60 THEN 'Alert'
      ELSE 'OK'
    END as currentStatus
  FROM sensor