2009-12-11 573 views
0

我使用下面的语句来创建视图中的一个比率计算:MySQL View:如何将计算字段的默认值设置为0?

轮(。((SurveysRejectedAsAdvertising/SurveysResponses)* 100),0)AS PercentageAdvertising

基本上,我把数对某个问题(在这种情况下,被认为是广告)的回复数量除以回复的总数。最后,我列出了五个可能的调查回答(“是否广告?”,“它是无聊的?”等)的百分比。

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

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

谢谢。

回答

1

你需要一个​​3210在那里。它选择的第一个非NULL参数,所以你需要的东西,如:

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

然后,当轮的结果是NULL,它会给你零代替。

+0

谢谢您的明确的答案。我很感激。 – 2009-12-12 04:02:37

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) 
+0

谢谢。正是我需要的。 – 2009-12-12 04:01:51

相关问题