0

我使用以下语句在视图中创建百分比计算:

圆形(((Surveys. RejectedAsAdvertising/ Surveys. Responses) * 100),0) ASPercentageAdvertising

基本上,我将某个问题(在这种情况下,被认为是广告)的响应数除以响应总数。

最后,我的列显示了五种可能的调查响应中的每一种的百分比(“它是广告吗?”、“它很无聊吗?”等)。

这非常有效,但我想调整一件事。当响应类型(例如,广告)没有任何投票时,我的计算字段会收到一个 NULL 值。

定义视图时,如何指定默认值 0?

谢谢。

4

2 回答 2

2

COALESCE是首选方法,因为它是在参数为空时处理评估的 ANSI 标准方法。作为 ANSI,Oracle、SQL Server、Postgres 等支持相同的语法,如果需要,可以更轻松地在数据库之间移植查询。

COALESCE(round(((Surveys.RejectedAsAdvertising / Surveys.Responses) * 100),0) AS PercentageAdvertising, 0)

IFNULL是 MySQL 特定的语法:

IFNULL(round(((Surveys.RejectedAsAdvertising / Surveys.Responses) * 100),0) AS PercentageAdvertising, 0)
于 2009-12-11T00:41:10.233 回答
1

你需要一个coalesce在那里。它选择第一个非 NULL 参数,因此您需要以下内容:

coalesce(
    round(
        ((Surveys.RejectedAsAdvertising / Surveys.Responses) * 100)
        ,0)
    ,0)
    AS PercentageAdvertising

然后,当回合的结果为 NULL 时,它会给你零。

于 2009-12-11T00:34:46.030 回答