我有一个包含三列的tabletraffic INTEGER, revtraffic INTEGER, ratio REAL

当我通过以下方式更新比率列时:

UPDATE table
SET ratio = revtraffic/traffic


在所有单元格中返回0.0。但是,如果写:

SET ratio = revtraffic*100/traffic


那么它会显示正确的结果,但显然是100倍。到底是怎么回事?

最佳答案

revtraffictraffic是整数,所以将它们除以integer division,它仅返回除法的“整个”部分(即小数点左侧的部分)。当您将结果分配给real时,该结果将被提升为real

您可以通过将参数之一明确地强制转换为real来解决此问题:

UPDATE table SET ratio = (CAST revtraffic AS REAL)/traffic

10-01 08:17