我想统计有多少个文档在 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
如何对多列应用一个过滤器?
提前致谢。
最佳答案
您当前的查询没有任何问题,这可能就是我在这里使用的查询。但是,您可以在此处使用 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;
关于postgresql - 使用 postgresql 查询在多列中搜索非空条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67831151/