sql server中除法運算結果總是為0(無小數精度)


偶爾發現SQL Server中除法運算結果總是為0的現象,之所以稱為現象,而不稱為BUG,是因為實際上的運算結果並不是錯誤的。

來看一個具體的例子:

SELECT 500/520; -- 0

通過這個例子可以看出來,語句的執行結果是0。這是因為SQL Server會自動根據除數與被除數的最大精度去對運算結果取精度,這里的除數和被除數都是整數,所以得到的結果也是整數。

來驗證一下這個結論:

SELECT 500.0/520; -- 0.961538
SELECT 500/520.0; -- 0.961538

通過上面的驗證可以看出來,只要除數與被除數之中有一個是小數,得到的結果也會是小數。

這樣的話,在SQL Server中除法運算中如果出現結果總是為0的現象,不用慌,只要知道了原因,就可以簡單通過以下技巧來解決:

SELECT (500 + 0.0)/520; -- 0.961538

技巧就是給除數或被除數加上一個0的小數,結果就有精度了,也就不會總是為0了。

 

"死亡就像是水消失在水里,幾乎不引起一絲波瀾。"


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM