在Vertica中选择列时,它会显示普通数值:
SELECT nvl2(exposure_time_ms,ROUND(exposure_time_ms / 1000,案例,exposure_time_ms <10000 THEN 1 ELSE 0 END),0)::数字(12,1)AS Exposure_seconds
但是当我在表中插入相同的东西时,该表的列为“ expersure seconds”,类型为NUMERIC(12,1),它会将小数点后的所有数字更改为0:
答案 0 :(得分:0)
大概是因为nvl2()
计算产生一个整数。因此,请尝试以下操作:
SELECT nvl2(exposure_time_ms,
ROUND(exposure_time_ms / 1000.0,
CASE WHEN exposure_time_ms < 10000 THEN 1 ELSE 0 END
), 0
)::numeric(12,1) AS exposure_seconds
我要说的是,根据幅度对值进行四舍五入真的没有意义。您应该按原样存储值,并使用四舍五入进行表示-如果确实需要它。