我有以下查询
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所示。
我仍然收到一行空白值
您可以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] 删除。
我来说两句