sql Server(2008或2012,特别是)CASE语句是否评估了所有WHEN条件,或者一旦找到评估为true的WHEN子句就退出?如果它确实经历了整个条件集,那是否意味着评估为true的最后一个条件会覆盖评估为true的第一个条件?例如:
SELECT CASE WHEN 1+1 = 2 THEN'YES' WHEN 1+1 = 3 THEN 'NO' WHEN 1+1 = 2 THEN 'NO' END
结果为“是”,即使最后一个条件应该使其评估为“否”.它似乎一旦找到第一个TRUE条件就会退出.有人可以确认是否是这种情况.
解决方法
@H_404_9@ •返回计算结果为TRUE的第一个input_expression = when_expression的result_expression.参考
http://msdn.microsoft.com/en-us/library/ms181765.aspx
这是标准的sql行为:
> CASE表达式求值为第一个真实条件.>如果没有真实条件,则评估为ELSE部分.>如果没有真实条件且没有ELSE部分,则计算结果为NULL.