在PostgreSQL中将浮点数转换为整数

14

我在postgresql数据库中有一组数据,其中一个列以浮点格式存储字符串数据,但现在我需要删除该字符串的小数部分。我如何在BD控制台中使用SQL更新语句来实现?这可能吗?

例如:

"25.3" -> "25"
如果不可能,我该怎么做呢? 提前感谢。

1
http://dba.stackexchange.com/questions/3429/how-can-i-convert-from-double-precision-to-bigint-with-postgresql - mlinth
2个回答

30
您最好将文本列转换为数值列或整型,以便考虑四舍五入的情况,例如:

SELECT '25.3'::numeric::integer AS num1, '25.5'::numeric::integer AS num2

这将分别返回整数25和26。

如果您不关心小数点后的数字,那么使用floor(column_name::numeric)::integer函数或者如上所述的substring也可以。


1
如何将'25.5'::numeric::integer保留为25? - DJo
3
使用取整函数 SELECT floor(25.5)::integer - Lucas

-2

由于它是一个字符串,您可以使用字符串函数来删除小数点后的数字。如果您不想四舍五入,只需删除小数部分,然后使用 -

update table_name 
   set column_name = substring(column_name from 1 for position('.' in column_name)-1);

如果你想要四舍五入,那么你可以使用@mlinth提到的转换。

我用比较慢的方法解决了我的问题,使用了类似于%运算符的方式,但我会接受你的答案,谢谢。 - hcarrasko

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接