SQL案例陈述

问题描述:

如何在我的SELECT中编写CASE语句来执行以下操作:SQL案例陈述

我有一列名为Values的列。此列可以具有值bca。如果它的值为b,我希望SELECT返回big;如果c回报small,如果a回报large

Case [Values] 
When 'a' Then 'large' 
When 'b' Then 'big' 
When 'c' Then 'small' 
End 

select 
    case values 
     when 'a' then 'large' 
     when 'b' then 'big' 
     when 'c' then 'small' 
    end as values_decoded 
from table 

另一种方法,可以给你同样的表现是这样的,它利用比较单一字符串:

SELECT 
SUBSTRING('large', 1, DATALENGTH('large')*(1-abs(sign(ASCII([Values]) - ASCII('a'))))) + 
SUBSTRING('big', 1, DATALENGTH('big')*(1-abs(sign(ASCII([Values]) - ASCII('b'))))) + 
SUBSTRING('small', 1, DATALENGTH('small')*(1-abs(sign(ASCII([Values]) - ASCII('c'))))) 
FROM table