SQL将查询中的NULL替换为0

SQL将查询中的NULL替换为0,sql,sql-server,tsql,Sql,Sql Server,Tsql,我试图用0替换空值,然后在此字段上进行计算,但无法使其正常工作。在下面的4个例子中,我仍然得到一个空值 关于如何写这个有什么建议吗 以下是我尝试过的: select ISNULL(posamt, 0) as total1, coalesce (posamt, 0) as total2, case when PosAmt = 0 then '0' else CONVERT(varchar(11), isnull(posamt, 0))end as total3,

我试图用0替换空值,然后在此字段上进行计算,但无法使其正常工作。在下面的4个例子中,我仍然得到一个空值

关于如何写这个有什么建议吗

以下是我尝试过的:

select
ISNULL(posamt, 0)   as total1,
    coalesce (posamt, 0) as total2,     
    case when PosAmt = 0 then '0' else CONVERT(varchar(11), isnull(posamt, 0))end as total3,
    CONVERT(varchar(11),isnull(posamt,0)) as total4
from mytable

我认为在WHEN语句的情况下需要使用ISNULL(posamt,0)。当posamt为NULL时,它永远不会等于0。

我认为在when语句的情况下,需要使用ISNULL(posamt,0)。当posamt为空时,它将永远不等于0。

这些应该可以工作。我的猜测是值是字符串,而不是值。您显示的结果不适用于运行的查询--第一列不同。为什么屏幕截图中的查询和结果不匹配?不要共享整个查询。删除所有不相关的列,并向我们显示运行的实际查询和得到的实际结果。最有可能的是,当你这样做的时候,你会发现问题出在哪里
ISNULL(posamt,0)
将永远不会返回
NULL
。肯定还有别的东西,比如
左连接
联合
@VladimirBaranov-就是这样。我确实有一个左连接导致了问题。谢谢大家给我指出了正确的方向。这些应该有用。我的猜测是值是字符串,而不是值。您显示的结果不适用于运行的查询--第一列不同。为什么屏幕截图中的查询和结果不匹配?不要共享整个查询。删除所有不相关的列,并向我们显示运行的实际查询和得到的实际结果。最有可能的是,当你这样做的时候,你会发现问题出在哪里
ISNULL(posamt,0)
将永远不会返回
NULL
。肯定还有别的东西,比如
左连接
联合
@VladimirBaranov-就是这样。我确实有一个左连接导致了问题。谢谢大家为我指明了正确的方向。