如何将小于 .5 的小数四舍五入为 SQL 中的以下数字?
How to round decimals smaller than .5 to the following number in SQL?
我遇到这种情况,我有一个包含 +1000 种产品的大型数据库。
其中一些的价格例如为 12.3、20.7、55.1。
| Name | Price |
| -------- | -------------- |
| Product 1| 12.3 |
| Product 2| 20.7 |
| Product 3| 55.1 |
(等等)...
我试过的是update prices set price = ROUND (price, 0.1)
。
此输出将是:
| Name | Price |
| -------- | -------------- | (after updated)
| Product 1| 12.3 | 12.0
| Product 2| 20.7 | 21.0
| Product 3| 55.1 | 55.0
小数点 < .5 的价格将保持不变,我没主意了。
如有任何帮助,我将不胜感激。
编辑,我需要更新所有行,我正在尝试了解 CEILING()
但只展示了如何将它与 SELECT
一起使用,关于如何执行 idk UPDATE CEILING
什么的?
使用 UPDATE prices SET PRICE = CEILING(PRICE);
获取小数 >0.5 的值的下一个整数
不完全清楚你在问什么,但我可以告诉你所示的函数调用没有意义。
the ROUND()
function 的第二个参数是小数位数,而不是您希望四舍五入的值的大小。此外,该函数只接受该参数的整数类型。因此,如果将值 0.1
传递给函数,将首先将值 转换为整数 ,然后将 0.1
转换为整数的结果整数是 0
.
我们看到,调用 ROUND(price, 0.1)
与调用 ROUND(price, 0)
相同。
如果要四舍五入到最接近的 0.1
,即小数点后一位,ROUND()
函数的正确值是 1
.
ROUND(price, 1)
在此处比较结果:
https://dbfiddle.uk/?rdbms=sqlserver_2019&fiddle=7878c275f0f9ea86f07770e107bc1274
注意尾随的 0 仍然存在,因为值的基本类型没有改变。如果您还想删除尾随的 0,那么您实际上正在进入字符串领域,为此您应该等待,客户端代码、应用程序或报告工具会处理转换。
我遇到这种情况,我有一个包含 +1000 种产品的大型数据库。
其中一些的价格例如为 12.3、20.7、55.1。
| Name | Price |
| -------- | -------------- |
| Product 1| 12.3 |
| Product 2| 20.7 |
| Product 3| 55.1 |
(等等)...
我试过的是update prices set price = ROUND (price, 0.1)
。
此输出将是:
| Name | Price |
| -------- | -------------- | (after updated)
| Product 1| 12.3 | 12.0
| Product 2| 20.7 | 21.0
| Product 3| 55.1 | 55.0
小数点 < .5 的价格将保持不变,我没主意了。
如有任何帮助,我将不胜感激。
编辑,我需要更新所有行,我正在尝试了解 CEILING()
但只展示了如何将它与 SELECT
一起使用,关于如何执行 idk UPDATE CEILING
什么的?
使用 UPDATE prices SET PRICE = CEILING(PRICE);
获取小数 >0.5 的值的下一个整数
不完全清楚你在问什么,但我可以告诉你所示的函数调用没有意义。
the ROUND()
function 的第二个参数是小数位数,而不是您希望四舍五入的值的大小。此外,该函数只接受该参数的整数类型。因此,如果将值 0.1
传递给函数,将首先将值 转换为整数 ,然后将 0.1
转换为整数的结果整数是 0
.
我们看到,调用 ROUND(price, 0.1)
与调用 ROUND(price, 0)
相同。
如果要四舍五入到最接近的 0.1
,即小数点后一位,ROUND()
函数的正确值是 1
.
ROUND(price, 1)
在此处比较结果:
https://dbfiddle.uk/?rdbms=sqlserver_2019&fiddle=7878c275f0f9ea86f07770e107bc1274
注意尾随的 0 仍然存在,因为值的基本类型没有改变。如果您还想删除尾随的 0,那么您实际上正在进入字符串领域,为此您应该等待,客户端代码、应用程序或报告工具会处理转换。