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
。