有人写了以下选择语句:
select ... , FLOOR (a / b) AS c, ...
您可以说出select语句的问题。如果b为零,则查询将导致异常。
如何在此处放置条件,以便如果b为零,那么c也将为零?
更新:
可以使用case语句解决此问题。
答案 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, ...
当然,这假设a
和b
本身都不是NULL
。