一尘不染

SQL Server CASE 语句是否评估所有条件或在第一个 TRUE 条件时退出?

sql

SQL Server(特别是 2008 或 2012)CASE语句是评估所有WHEN条件还是在找到WHEN评估为 true 的子句后退出?如果它确实通过了整个条件集,这是否意味着最后一个条件评估为 true 会覆盖第一个评估为 true 的条件所做的事情?例如:

SELECT
    CASE
        WHEN 1+1 = 2 THEN'YES'
        WHEN 1+1 = 3 THEN 'NO'
        WHEN 1+1 = 2 THEN 'NO' 
    END

结果是“是”,即使最后一个条件应使其评估为“否”。一旦找到第一个 TRUE 条件,它似乎就退出了。有人可以确认是否是这种情况


阅读 58

收藏
2022-10-27

共1个答案

一尘不染

这是标准的 SQL 行为:

  • CASE表达式计算为第一个真条件。
  • 如果不存在真条件,则评估该ELSE部分。
  • 如果不存在真实条件且没有ELSE部分,则计算结果为NULL
2022-10-27