我有时间发现如何最好地编写以下内容:
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。感谢您的任何指导。
我有时间发现如何最好地编写以下内容:
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。感谢您的任何指导。
CASE 语句按顺序评估其条件并在满足条件的第一个条件处停止
从您的示例中,可以推断出@B 或@c 为零。
运算优先级通常是指首先评估哪个运算符(例如“*”或“-”)。您的问题可能应该标题为“案例评估顺序”。
如果没有值,我无法确定这就是您的意思,但您似乎在问 case 语句以什么顺序评估其 WHEN 子句。如果这确实是问题,那么答案相当简单。CASE WHEN 将返回第一个为 true 的 THEN 语句的值,并在返回后立即停止评估。这意味着在您的示例中,@Sample 将首先评估 WHEN 到最后一个 WHEN(并在 WHEN 内从左到右评估),以便您的逻辑检查是:
希望这可以帮助。