我们假设我们有一张名为“邻居”的桌子。它包含变量' 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
答案 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