dFuelCharge大部分为零
如何在除以零时绕过错误?
表达
(dFuelCharge / (dShipCharge + dAccCharge))
制作新列dFuelRate
答案 0 :(得分:1)
使用NULLIF运算符,如果得到除以零的问题,则将其默认为0.
答案 1 :(得分:1)
dFuelCharge
的值不会导致除以零错误。
当dShipCharge + dAccCharge
为零时,您需要做的是确定应该的结果是什么?
您可能需要使用三元运算符?:
将其作为Some test
,true expression
,else expression
读取。
(
dFuelCharge
/
(
(dShipCharge + dAccCharge) == 0
? 1.0
: (dShipCharge + dAccCharge)
)
)
为了清楚起见,我将表达式分成多行,但你可以看到完整的表达式是燃油费用除以:1,如果船舶和acc费用的总和为零;否则,除以船舶和收费之和。
请注意我使用1.0
导致浮点除法(有余数)。如果您想要基于整数的除法(截断十进制值),请使1
当没有提供船舶和/或收费时,他们可能不想记录费率。这是糟糕的数据,所以留空。正如@rvphx所指出的,这种方法使用NULLIF(a, b)
运算符。请将其读作if a matches b, return null. Otherwise, return a
(dFuelCharge / NULLIF((dShipCharge + dAccCharge),0)