close
在 SQL 語法中,當我們要將 51 除以 100 會寫成 51 / 100,得到的結果應該是 0.51 嗎?
那我用 ROUND(51 / 100 , 0),應該會進位後得到 1 吧?
結果居然是 0。
範例碼(一):
SELECT 51 / 100 , ROUND(51 / 100 , 0)
執行結果:
這是跟資料類型優先順序有關係!
利用資料類型的優先順序,把除法運算子左右兩旁的整數,其中一個轉換為浮點數,這時因為運算子結合了整數與浮點數,
隱含的轉換會將整數轉換為浮點數,為什會轉換成浮點數呢?因浮點數的優先順序高於整數,最後結果就是浮點數,當然左
右整數都先強制轉換為浮點數最好。
範例碼(二):
SELECT 1.0 * 51 / 100 , 51 / (1.0 * 100) , --將整數 51 轉浮點數(FLOAT) CAST(51 AS FLOAT) / 100 , --將整數 51 轉浮點數(FLOAT) CAST(51 AS FLOAT) / CAST(100 AS FLOAT)
執行結果:
範例碼(三):
SELECT --將整數 21 轉浮點數(FLOAT) ROUND(CAST(21 AS FLOAT) * 228 / 60 , 2)
執行結果:
Reference:http://adalf0722.blogspot.tw/2010/08/blog-post.html
Reference:https://dotblogs.com.tw/yangxinde/2011/03/24/22062
全站熱搜
留言列表