# 問題 ### 「整數型別的值」除以「整數型別的值」,會得到「去除小數點的整數」 在 SQL 中,當你將兩個整數類型相除時,結果會是整數,任何小數部分都會被截斷(去掉)。這是由於 SQL 遵循整數除法的規則,[SQL 默認認為你希望結果也是整數]( https://learn.microsoft.com/en-us/sql/t-sql/language-elements/divide-transact-sql?view=sql-server-ver16#:~:text=If%20an%20integer%20dividend%20is%20divided%20by%20an%20integer%20divisor%2C%20the%20result%20is%20an%20integer%20that%20has%20any%20fractional%20part%20of%20the%20result%20truncated.)。 以下以 MSSQL 舉例,假設你有以下整數運算: ```sql SELECT 1 / 10 AS Result; ``` 在這種情況下,SQL 會執行整數除法,結果為 0 而不是 0.1。 # 解法 #### 方法一:顯式轉換為 numeric 或 decimal ```sql SELECT CAST(1 AS numeric) / CAST(10 AS numeric) AS Result; ``` 這樣會得到 0.1。 #### 方法二:將其中一個操作數乘以 1.0 ```sql SELECT 1 * 1.0 / 10 AS Result; ``` 這樣也會得到 0.1。 #### 方法三:使用 CAST 將其中一個操作數轉換為浮點數 ```sql SELECT CAST(1 AS float) / 10 AS Result; ``` 這樣同樣會得到 0.1。 --- 參考資料:[/ (Division) (Transact-SQL)]( https://learn.microsoft.com/en-us/sql/t-sql/language-elements/divide-transact-sql?view=sql-server-ver16)