我有以下查询
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' )
The NULLIF
function如果 yourField
等于第二个值(示例中的 ''
),将返回 null,从而使 COALESCE
函数在所有情况下都能正常工作:
QUERY | RESULT
---------------------------------------------------------------------------------
SELECT COALESCE(NULLIF(null ,''),'0') | '0'
SELECT COALESCE(NULLIF('' ,''),'0') | '0'
SELECT COALESCE(NULLIF('foo' ,''),'0') | 'foo'
关于sql - 在 PostgreSQL 中使用 COALESCE 处理 NULL 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27479180/