首页 > 数据库 > mysql教程 > 为什么 PostgreSQL 整数除法返回错误结果?

为什么 PostgreSQL 整数除法返回错误结果?

Linda Hamilton
发布: 2024-12-27 22:58:12
原创
326 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板