计算列不正确的语法

问题描述 投票:1回答:1

我想在SQL Server 2017 Developer中创建一个计算列

ISNULL([Nominator]/NULLIF([Denominator]), 0) AS [Recidivation]  

但这会引发错误

'('附近的语法不正确。

此语法有效:

[Nominator]/[Denominator] AS [Recidivation]

我必须是盲人或其他什么,但有人知道如何在一个计算列中阻止除零,如上所示?

帮助将不胜感激。谢谢。

sql sql-server
1个回答
3
投票

你需要一个额外的, 0。我也更喜欢标准的COALESCE()功能。所以:

COALESCE(Nominator / NULLIF(Denominator, 0), 0) AS [Recidivation]  

我也认为case的意图可能更清楚:

(CASE WHEN Denominator = 0 or Denominator IS NULL THEN 0
      ELSE Nominator / Denominator
 END)
© www.soinside.com 2019 - 2024. All rights reserved.