1
您是否可以在SQL Server 2014 Express中解釋此錯誤?SQL Server 2014錯誤:將表達式轉換爲數據類型int的算術溢出錯誤
SELECT FLOOR(21474837 * 100) -- doesn't work
SELECT FLOOR(214748370 * 10) -- doesn't work
SELECT FLOOR(2147483700) -- works
SELECT FLOOR(21474837/0.01) -- works
數量21474837
被選中,是因爲人數上處於劣勢沒有問題,既不
是不是根本問題是如何處理乘法和類型推斷? 即使你沒有調用'Floor',它也不會有同樣的錯誤嗎? –
是的,如果您沒有調用floor並且未使用多個或分子/分母上的小數進行隱式轉換,那麼會發生這種情況。但問題是關於樓層,所以我在樓上指定了我的答案。我在底部添加了一個關於此的金塊 – scsimon
我想我的觀點是,解釋爲什麼有一個錯誤沒有被這個答案明確描述。錯誤的原因與類型推斷和乘法行爲有關。將int乘以int將導致服務器採用int結果。對於int而言太大的常量值將導致服務器爲表示使用不同的數據類型。除以十進制將導致十進制結果。 「FLOOR」的行爲或多或少是無關緊要的。解決方案是正確的,但不是解釋。 –