【问题标题】:searching not null condition in multiple columns with query postgresql使用查询 postgresql 在多列中搜索非空条件
【发布时间】:2021-08-22 03:34:38
【问题描述】:
我想统计在 field1、field2、field3 和 field4 中有多少没有日期的文档。我创建了如下查询,但它看起来并不好。
select
count(doc)
where true
and field1 is not null
and field2 is not null
and field3 is not null
and field4 is not null
如何为多个列应用一个过滤器?
提前致谢。
【问题讨论】:
标签:
postgresql
filter
multiple-columns
【解决方案1】:
您当前的查询没有任何问题,这可能是我在这里使用的。但是,您可以在这里使用COALESCE 技巧:
SELECT COUNT(*)
FROM yourTable
WHERE COALESCE(field1, field2, field3, field4) IS NOT NULL;
这是有效的,因为对于至少有四个字段之一分配给非 NULL 日期的任何记录,IS NOT NULL 检查将失败。只有四个字段均为NULL 的记录才会匹配。
请注意,这会计算至少有一个非NULL 字段的记录。如果您想计算所有四个字段均为NULL 的记录,则使用:
SELECT COUNT(*)
FROM yourTable
WHERE COALESCE(field1, field2, field3, field4) IS NULL;