You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL查询实现:ANY子句列表为空时返回全表数据

解决动态子类别筛选时列表为空返回全表的问题

直接在WHERE子句中添加判断条件,当筛选列表为空时跳过筛选逻辑返回所有数据,修改后的SQL查询如下:

SELECT *
FROM table
WHERE {{ $state.categoriesBadge.filter((item) => item.isSelected == true).map((item) => item.value) }} = '{}'
   OR column = ANY( {{ $state.categoriesBadge.filter((item) => item.isSelected == true).map((item) => item.value) }})

如果使用的是支持数组操作的数据库(比如PostgreSQL),也可以通过检查数组长度实现:

SELECT *
FROM table
WHERE array_length({{ $state.categoriesBadge.filter((item) => item.isSelected == true).map((item) => item.value) }}, 1) IS NULL
   OR column = ANY( {{ $state.categoriesBadge.filter((item) => item.isSelected == true).map((item) => item.value) }})

逻辑说明

  • 未选中任何子类别徽章时,动态生成的筛选列表为空,第一个条件触发,查询返回全表所有数据
  • 选中徽章后,筛选列表不为空,第二个条件生效,仅返回对应子类别条目

内容的提问来源于stack exchange,提问作者Maciej Ziolkowski

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 22:12:43