これはどの 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%'
そしてそれを実行すると、どのような結果が得られますか?