PostgreSQL 中的除法問題:為什麼除法(/) 傳回不正確的結果
當嘗試在PostgreSQL 中使用整數列計算時,使用者可能會遇到以下問題:遇到意想不到的結果。考慮以下場景:
問題:
名為「software」的表格包含欄位「dev_cost」和「sell_cost」。您想要確定需要銷售多少軟體才能收回 dev_cost。鑑於“dev_cost”為 16000,“sell_cost”為 7500,您期望結果為 3。但是,查詢
select dev_cost / sell_cost from software;
回傳 2。
原因:
PostgresSQL 執行整數除法,這將結果截斷為零。由於「dev_cost」和「sell_cost」都定義為整數,因此結果被截斷為 2。
解:
要得到正確的結果,至少需要一個運算元必須轉換為浮點類型,例如 float 或decimal。這可以使用cast()函數或雙冒號::運算子來實現:
select cast(dev_cost as decimal) / sell_cost from software;
或
select dev_cost::decimal / sell_cost from software;
或者,您可以使用將結果四捨五入到最接近的整數天花板()函數:
select ceil(dev_cost::decimal / sell_cost) from software;
示範:
[SQLFiddle示範](https://www.sqlfiddle.com/#!17/23da8/1)
以上是為什麼 PostgreSQL 整數除法回傳錯誤結果?的詳細內容。更多資訊請關注PHP中文網其他相關文章!