在case语句中运行模数函数时,很多时候会返回超出预期范围的值.
SELECT CASE WHEN ABS(CheckSUM(NewId())) % 5 IN (0,1,2,3,4) then NULL
ELSE 'What Happened?' END
Run Code Online (Sandbox Code Playgroud)
如果您运行此脚本几次,您将看到有时候结果似乎超出了0,1,2,3,4的范围.我的想法是,在case语句中,这会以某种方式返回非整数值,从而导致modulo成为一种无效的按案例排序的方法.
有人可以解释这些案件中发生的事情,以便我将来可以解决这个问题吗?
注意:如果我自己运行代码模数函数(在case语句之外)并返回结果,则所有值都在预期的0,1,2,3,4范围内.