postgresql - 使用 postgresql 查询在多列中搜索非空条件

标签 postgresql filter multiple-columns

我想统计有多少个文档在 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/

相关文章:

arrays - Postgres 将 Text 数组转换为 Int 数组

mysql - CloudFormation 更改集显示替换,尽管没有更改

java - hibernate :如何选择表中的所有行

在 html 元素中过滤文本的 JavaScript 问题

filter - 应用的Android Studio ADB过滤功能不再起作用

ios - 使用 NSPredicate 搜索字典中的所有行

html - 多列布局中的阵容元素

php - ' 或 "in PHP' s Postgres 查询

Pyspark 自动重命名重复列

Mysql - 将多个列合并为一列,同时保留每个值