我有一个包含三列的table
:traffic INTEGER, revtraffic INTEGER, ratio REAL
。
当我通过以下方式更新比率列时:
UPDATE table
SET ratio = revtraffic/traffic
在所有单元格中返回0.0。但是,如果写:
SET ratio = revtraffic*100/traffic
那么它会显示正确的结果,但显然是100倍。到底是怎么回事?
最佳答案
revtraffic
和traffic
是整数,所以将它们除以integer division,它仅返回除法的“整个”部分(即小数点左侧的部分)。当您将结果分配给real
时,该结果将被提升为real
。
您可以通过将参数之一明确地强制转换为real
来解决此问题:
UPDATE table SET ratio = (CAST revtraffic AS REAL)/traffic