在SQL查询中执行CASE语句

时间:2017-03-28 14:49:46

标签: sql case processing-efficiency

我们假设我们有一张名为“邻居”的桌子。它包含变量' name',并且正在选择名称并使用CASE语句将值分配给第二个变量' age'。可以在SQL中用于CASE语句的语法有两种不同的形式:

1)简单的CASE表达式:

    CASE name   
        WHEN 'George' THEN 36   
        WHEN 'Alfred' THEN 40
        ELSE null   
    END as age

2)搜索CASE表达式:

    CASE  
        WHEN name = 'George' THEN 36   
        WHEN name = 'Alfred' THEN 40
        ELSE null    
    END as age

这两个陈述正在做同样的事情。我的问题是,这些语句如何在内存中处理?他们处理的是相同的,还是一个比另一个更有效?

https://docs.microsoft.com/en-us/sql/t-sql/language-elements/case-transact-sql

2 个答案:

答案 0 :(得分:1)

正确的语法是

CASE name   
    WHEN 'George' THEN 36   
    WHEN 'Alfred' THEN 40
    ELSE null   
END  as age

CASE 
    WHEN name = 'George' THEN 36   
    WHEN name = 'Alfred' THEN 40
    ELSE null   
END  as age

后者的好处是它允许评估多个列:

CASE 
    WHEN name = 'George' and OtherColumn = 'Stuff' THEN 36   
    WHEN 'Alfred' THEN 40
    ELSE null   
END  as age

答案 1 :(得分:0)

不确定内存中的表示或性能,但第二种方法可以评估多种条件,如

case 
  when condition1 and (condition2 or condition3) then blah
  else blah blah
end