SELECT 中的簡寫 CASE

CASE 的簡寫變體根據一系列值來計算表示式(通常是一列)。此變體稍短,並且可以一次又一次地重複評估表示式。但是仍然可以使用 ELSE 子句:

SELECT Id, ItemId, Price,
  CASE Price WHEN 5  THEN 'CHEAP'
             WHEN 15 THEN 'AFFORDABLE'
             ELSE         'EXPENSIVE'
  END as PriceRating
FROM ItemSales

提醒一句。重要的是要意識到,當使用短變數時,整個語句將在每個 WHEN 進行評估。因此以下宣告:

SELECT 
    CASE ABS(CHECKSUM(NEWID())) % 4
        WHEN 0 THEN 'Dr'
        WHEN 1 THEN 'Master'
        WHEN 2 THEN 'Mr'
        WHEN 3 THEN 'Mrs'
    END

可能會產生一個 NULL 的結果。那是因為在每個時代都會再次呼叫 NEWID() 並獲得新的結果。相當於:

SELECT 
    CASE 
        WHEN ABS(CHECKSUM(NEWID())) % 4 = 0 THEN 'Dr'
        WHEN ABS(CHECKSUM(NEWID())) % 4 = 1 THEN 'Master'
        WHEN ABS(CHECKSUM(NEWID())) % 4 = 2 THEN 'Mr'
        WHEN ABS(CHECKSUM(NEWID())) % 4 = 3 THEN 'Mrs'
    END

因此,它可以錯過所有的 WHEN 案例,結果為 NULL