2011-03-08 29 views

回答

1

由於x % y返回0,當xy的倍數時,答案是「是的,您的表達式可以返回0」。

因此,如果id必須大於0,則需要使用>而不是>=。當然,如果模運算符沒有返回0,您仍然可以使用>而不是>=,並且您會得到相同的效果。

+0

聽起來像1可能永遠不會返回。 – Louis 2011-03-08 05:55:42

1

是的。如果abs(random())返回值max(id),那麼模的結果將爲零。由於abs(random())可以返回0 & 9223372036854775807之間的任何值,這是絕對有可能的。

+0

謝謝你解釋random()的範圍。 – Louis 2011-03-08 06:00:06

1

是的,它可以通過兩種方式

返回0,考慮到3 % 3 == 06 % 3 == 0,等等,那麼你會得到0,如果random()恰好是max(id)或偶數分隔物。

random()也可以返回0和0 % anything == 0,這是另一種可能性。

+0

感謝您提醒我%工作原理。 – Louis 2011-03-08 06:01:51

1

是的,它應該>因爲模分可以返回0(a mod a ==0,0 mod a == 0)。此外,您可能要檢查是否(SELECT max(id)不爲空/ 0(a mod 0未在某些系統中定義,或a)