有人写了以下select语句:
select ... , FLOOR (a / b) AS c, ...
你可以说出select语句的问题。如果b为零,则查询将导致异常。
如何在这里放置一个条件,使得如果b为零,c也将为零?
更新:
case语句可以用来解决这个问题。
发布于 2019-05-21 03:52:07
使用case expression,您可以在其中控制值并避免异常。
select ..., CASE WHEN b IS 0 THEN 0 ELSE (a / b) END AS c, ...
发布于 2019-05-21 03:49:40
使用nullif()
select ... , FLOOR(a / NULLIF(b, 0)) AS c, ...
我更喜欢在未知值中使用NULL
。如果你想使用0
,你可以使用:
select ... , COALESCE(FLOOR(a / NULLIF(b, 0)), 0) AS c, ...
当然,这假设a
和b
本身都不是NULL
。
https://stackoverflow.com/questions/56227284
复制相似问题