这是什么 SQL 实现?
如前所述,
(x/1) - (x/2)*2
相当于
X - (2*(x/2))
其中,如果正在执行整数除法,则根据值是偶数还是奇数产生 0 或 1:
x x/2 2*(x/2) x-(2*(x/2))
- --- ------- -----------
0 0 0 0
1 0 0 1
2 1 2 0
3 1 2 1
4 2 4 0
...
如果是这样,这似乎是一种检查奇/偶值的奇怪方式,特别是因为我知道的大多数 SQL 实现都支持模运算符或函数,要么x % y
要么mod(x,y)
。
看似无关的除以 1 让我认为有问题的列可能是浮点数。也许编写查询代码的人正试图检查浮点列的低位中的抖动或模糊性?
如果您修改查询以返回计算的所有中间值:
SELECT A.NAME as Name ,
A.NUM_FIELD as X ,
A.NUM_FIELD / 1 as X_over_1 ,
A.NUM_FIELD / 2 as X_over_2 ,
( X.NUM_FIELD / 2 )
* 2 as 2x_over_2 ,
( A.NUM_FIELD / 1 )
- ( A.NUM_FIELD / 2 ) * 2 as Delta ,
case when ( ( A.NUM_FIELD / 1 ) - ( A.NUM_FIELD / 2 ) * 2 ) <> 0
then 'return'
else 'discard'
end as Row_Status
FROM THE_TABLE A
WHERE A.NAME LIKE '%JOHN%DOE%'
然后执行它,你得到什么结果?