sql-server – SQL Server CASE语句是否评估所有条件或在第一个TRUE条件下退出?

前端之家收集整理的这篇文章主要介绍了sql-server – SQL Server CASE语句是否评估所有条件或在第一个TRUE条件下退出?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
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条件就会退出.有人可以确认是否是这种情况.

解决方法

•返回计算结果为TRUE的第一个input_expression = when_expression的result_expression.

参考
http://msdn.microsoft.com/en-us/library/ms181765.aspx

这是标准的sql行为:

> CASE表达式求值为第一个真实条件.>如果没有真实条件,则评估为ELSE部分.>如果没有真实条件且没有ELSE部分,则计算结果为NULL.

猜你在找的MsSQL相关文章