Sql 查询失败时如何用“0”替换并显示空值

Sql 查询失败时如何用“0”替换并显示空值,sql,razor,webmatrix,Sql,Razor,Webmatrix,我正在使用razor在MS WebMatrix中工作 我遇到的问题是,如果我的一个查询解析为错误除以0,例如,整个页面将失败。我希望查询为此输出0 代码: var itot=db.queryValue从dbo.DR_TRANS中选择SUMSUBTOTAL,其中TRANSDATE=41195,SUBTOTAL>0 var ctot=db.queryvalue从dbo.DR_TRANS中选择SUMSUBTOTAL,其中TRANSDATE=41195,TRANSTYPE=1,SUBTOTAL用COAL

我正在使用razor在MS WebMatrix中工作

我遇到的问题是,如果我的一个查询解析为错误除以0,例如,整个页面将失败。我希望查询为此输出0

代码:

var itot=db.queryValue从dbo.DR_TRANS中选择SUMSUBTOTAL,其中TRANSDATE=41195,SUBTOTAL>0


var ctot=db.queryvalue从dbo.DR_TRANS中选择SUMSUBTOTAL,其中TRANSDATE=41195,TRANSTYPE=1,SUBTOTAL用COALESCE包装聚合函数应返回0而不是NULL:


如果第一个参数不为null,则返回第一个参数;如果第一个参数为null,则返回第二个参数。我不知道webmatrix使用什么函数,但COALESCE是相当标准的。在Oracle中,可以使用NVL。ISNULL是另一个这样的函数。

@Glenn使用SQL提供了一个完美的解决方案。但是,您可能更希望了解如何在c中处理空值。这是一口,说如果某物不是空的,就用它,如果它是空的,就用它后面的??。一个例子比我刚才写的更容易理解。代码的最后一行如下所示:

var nett = itot ?? 0 + ctot ?? 0;
基本上是??0表示如果为null,则将其视为零,否则使用值本身

我更喜欢用c语言做尽可能多的事情,并尽可能使我的SQL保持简单。但我认识到这更多的是个人偏好

通常,在某些情况下,您必须处理SQL返回的null,可能是一个字段,其中null表示用户没有输入任何内容,零表示用户输入了零。在这种情况下,您可以在c中测试null,如

if ( itot == null )
{
    // do appropriate null stuff
    itot = 0;
} 
else
{
    // do non null stuff
    // nothing needed in this case
}

var itotnn=IFitot==NULL{0.00}否则{itot};我这样做了,但它说“如果”不是一个有效的表达术语。我只尝试了一个等号,同样的结果。如果改变了程序中正在运行的内容的流程。这就是它不起作用的原因。我将对我的示例进行编辑,使其更像您要查找的内容。它在一定程度上起作用。在我剩下的代码完成之前,我不知道这是否有用。我仍然有代码在编译的其他地方对空值抛出错误??从下面的答案中选择0,一切正常。
if ( itot == null )
{
    // do appropriate null stuff
    itot = 0;
} 
else
{
    // do non null stuff
    // nothing needed in this case
}