首頁 >資料庫 >mysql教程 >為什麼 PostgreSQL 整數除法回傳錯誤結果?

為什麼 PostgreSQL 整數除法回傳錯誤結果?

Linda Hamilton
Linda Hamilton原創
2024-12-27 22:58:12406瀏覽

Why Does PostgreSQL Integer Division Return Incorrect Results?

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn