我有时间发现如何最好地编写以下内容:
SET @SAMPLE = (SELECT CASE
WHEN @A < 0.01 AND @B < 0.01 THEN -1
WHEN @A < 0.01 THEN @B
ELSE @C
END )
我没有达到我的期望。运行后我发现@SAMPLE包含0.00。感谢您提供任何指导。
答案 0 :(得分:5)
CASE语句按顺序评估其条件并停止 满足条件满足的第一个条件
从你的例子来看,所有可以推断的是@B或@c为零。
操作优先级通常是指首先评估哪个运算符(例如“*”或“ - ”)。您的问题应该标题为“案例评估顺序”。
答案 1 :(得分:1)
没有价值观,我无法确定这是你的意思,但似乎你在问一个案例陈述评估其WHEN条款的顺序。如果这确实是问题,那么答案就相当简单。 CASE WHEN将返回第一个WHEN的THEN语句的值为true,并在返回后立即停止计算。这意味着在您的示例中@Sample将首先评估WHEN以持续WHEN(并且在WHEN中从左到右评估),以便您的逻辑检查是:
希望这有帮助。