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
。