在选择语句中使用除法操作

时间:2019-05-20 19:48:54

标签: sql oracle

有人写了以下选择语句:

select ... ,   FLOOR (a / b) AS c, ...

您可以说出select语句的问题。如果b为零,则查询将导致异常。

如何在此处放置条件,以便如果b为零,那么c也将为零?

更新

可以使用case语句解决此问题。

2 个答案:

答案 0 :(得分:4)

使用case expression,您可以在其中控制值并避免异常。

select ..., CASE WHEN b IS 0 THEN 0 ELSE (a / b) END AS c, ...

答案 1 :(得分:1)

使用nullif()

select ... , FLOOR(a / NULLIF(b, 0)) AS c, ...

我更喜欢使用NULL作为未知值。如果您想要0,可以使用:

select ... , COALESCE(FLOOR(a / NULLIF(b, 0)), 0) AS c, ...

当然,这假设ab本身都不是NULL