我有以下查询

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,如附图所示
sql - 使用 COALESCE 处理 PostgreSQL 中的 NULL 值-LMLPHP

但是我想使用 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 所示。

我仍然收到一行空白值

sql - 使用 COALESCE 处理 PostgreSQL 中的 NULL 值-LMLPHP

最佳答案

您可以将 COALESCENULLIF 结合使用以获得简短有效的解决方案:

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/

10-13 05:07