sql - 数组包含空值 PostgreSQL
问题描述
我在 PostgreSQL 中有 SQL 查询,它以数组的形式过滤特定字段,以便在 bigint 范围内。我想增加不过滤掉空值的可能性。使用现有查询,过滤掉所有字段的空值:
select *
from table_test
where '[0,2147483647]'::int8range @> ALL(ARRAY[fields])
我想做这样的事情,只有在这里我检查整个数组,而我想检查每个字段:
select count(*) from dbm.inventory_source where '[0,2147483647]'::int8range @> ALL(ARRAY[id, exchange_id, min_cpm_micros])
or (array[id, exchange_id, min_cpm_micros]) is null
另外,我不想检查每个字段是否为空,而是我想检查整个字段数组的空值。我将字段名称(如一个字符串)传递给查询(称为字段),这就是我不想单独检查每个字段的原因。创建这样的实现是为了对多个表进行更通用的查询。
如何修复此查询?
解决方案
我想增加不过滤掉空值的可能性。
基于此,我希望逻辑如下:
where '[0,2147483647]'::int8range @> ALL(ARRAY[field_1, field_2, field_3]) or
(field_1 is null and field_2 is null and field_3 is null)
我不清楚您是否要允许所有值成为NULL
或其中任何一个。以上内容适用于所有人。如果需要,请将 s 更改and
为or
s。
推荐阅读
- scala - Scala:在 if 条件下声明 val
- angular - Angular 非全局单例服务
- javascript - 如何在formik中提交对象数组?
- ionic-framework - phonegap-plugin-push 消息未显示为 android
- ios - 使用您生成的应用专用密码登录。如果您忘记了应用专用密码或需要创建一个新密码 -22938
- c# - 如何在 Microsoft Visual Studio 2017 中安装 XNA 框架?
- node.js - 无法使用 npm-postgres 发布 postgres 客户端
- django - Django admin,如何只触发一次功能?
- sql-server - 在单个事务中对不同连接进行并行查询
- sql-server - 模式匹配查询的性能调优