繁体   English   中英

db2:如何从数字列中删除小数?

[英]db2: how to remove the decimal from number column?

一个非常简单的查询

select avg(price) from cars where type = 'electric';

结果是

1                                
---------------------------------
                45000,00000000000

我想删除 ,00000000000 以获得

   1                                
    ---------------------------------
                    45000

我尝试过投射和圆形但没有成功。 我在 Db2 上

这个不错的 ltrim 适用于所有类型的汽车

select replace(ltrim(replace(price,'0',' ')),' ','0') from cars;

但是使用 with avg 返回带有 00000 的字符串

select replace(ltrim(replace(avg(price),'0',' ')),' ','0') from cars where type = 'electric';

结果是..

45000.00000000000

:( 只有 , 被改变了。

cast荷兰国际集团这个值应该只是工作:

select cast(avg(price) as int) as avg_int
from cars 
where type = 'electric';

正如另一个答案所建议的那样,将其转换为整数将起作用。

但是,请记住,

  1. 您将截断任何十进制值。
  2. 您正在从一种类型转换为另一种类型。

您可以通过在ROUND()之后进行转换来解决 #1

select int(round(avg(price),0)) as avg_int
from cars 
where type = 'electric'

您可以通过使用DECIMAL()ZONED()来解决 #2,根据原始列类型的比例为零。

select dec(avg(price),10,0) as avg_dec
from cars 
where type = 'electric'

当然ROUND()也可以与DECIMAL()ZONED() ......

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM