sql - 在 PostgreSQL 中使用 COALESCE 处理 NULL 值

标签 sql database postgresql null coalesce

我有以下查询

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,如附图所示 enter image description here

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

我仍然收到一行空白值

最佳答案

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

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/

相关文章:

sql - Postgres 删除行号中的空白

database - 如何在 PostgreSQL 数据库中存储 GPS 跟踪数据

sql - 是否可以取消关联所有相关的 SQL 子查询?

android - sqlite.SQLiteException : no such column: data1 (Sqlite code 1): 异常

asp.net - MySQL 根据列的内容更改顺序

php - 如何插入 MySQL 数据库并在 PHP PDO 中返回其 id?

sql - SELECT * 不返回任何行,但 SELECT Count(*) 返回非零值

c# - 如何使用 Moq 模拟数据库方法调用?

java - Guice、JDBC 和管理数据库连接

postgresql - 删除记录时锁定数据库表 - 了解 postgresql 中的 "Read Committed"事务隔离