使用COALESCE处理PostgreSQL中的NULL值

罗南:

我有以下查询

SELECT  DISTINCT 
     pt.incentive_marketing, 
     pt.incentive_channel, 
     pt.incentive_advertising 
FROM test.pricing pt 
WHERE pt.contract_id = 90000 
group by 1,2,3 
order by pt.incentive_marketing;

上面的查询返回了o / p,如附图所示 在此处输入图片说明

但是我想使用COALESCE将所有空值替换为0请让我知道如何在上面的SELECT查询中实现

现在,我使用合并进一步修改了查询,如下所示

SELECT  
     COALESCE( pt.incentive_marketing, '0' ), 
     COALESCE(pt.incentive_channel,'0'), 
     COALESCE( pt.incentive_advertising,'0') 
FROM test.pricing pt 
WHERE pt.contract_id = 90000 
group by 1,2,3 

结果如图2所示。

我仍然收到一行空白值

安德里亚·利吉奥斯(Andrea Ligios):

您可以COALESCE与结合使用,以NULLIF获得一个简短而有效的解决方案:

COALESCE( NULLIF(yourField,'') , '0' )

NULLIF如果yourField等于第二个值(''在这种情况下),函数将返回null ,从而使该COALESCE函数在所有情况下都可以正常使用:

                 QUERY                     |                RESULT 
---------------------------------------------------------------------------------
SELECT COALESCE(NULLIF(null  ,''),'0')     |                 '0'
SELECT COALESCE(NULLIF(''    ,''),'0')     |                 '0'
SELECT COALESCE(NULLIF('foo' ,''),'0')     |                 'foo'

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章