我有以下查询
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 查询中实现这一点
现在我使用 coalesce 进一步修改了查询,如下所示
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
),则 The ''
function 将返回 null,从而使 COALESCE
函数完全适用于所有情况: QUERY | RESULT
---------------------------------------------------------------------------------
SELECT COALESCE(NULLIF(null ,''),'0') | '0'
SELECT COALESCE(NULLIF('' ,''),'0') | '0'
SELECT COALESCE(NULLIF('foo' ,''),'0') | 'foo'
关于sql - 使用 COALESCE 处理 PostgreSQL 中的 NULL 值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27479180/