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

使用LIKE与ANY(array)时查询条件失效的问题求解

问题解决:SQL中like any条件失效的修复

问题根源

你写的'%sys%' like any(series_arr)逻辑完全搞反了。SQL的like语法规则是左侧为待匹配的字符串,右侧为通配符模式。你当前的写法是让通配符模式'%sys%'去匹配数组中的元素,这和你想要的“数组中存在包含sys的元素”逻辑相悖,导致这个条件永远不成立,最终只有'displays' = any(lob_arr)的统计生效。

修复方案

提供两种可靠的修复写法,根据你的数据库类型选择:

方案一:兼容性通用写法(支持大部分带数组功能的SQL数据库)

通过unnest展开数组,用exists子查询判断是否有符合条件的元素:

select sum(case when exists (select 1 from unnest(series_arr) elem where elem like '%sys%')
                  or 'displays' = any(lob_arr)
                then revenue else 0 end) as sys_displ_revenue
from mytable

方案二:简洁写法(适用于PostgreSQL等支持数组any配合like的数据库)

修正like的左右顺序,让数组元素作为待匹配对象,通配符模式放在右侧:

select sum(case when any(series_arr) like '%sys%'
                  or 'displays' = any(lob_arr)
                then revenue else 0 end) as sys_displ_revenue
from mytable

内容的提问来源于stack exchange,提问作者Reshmi Nair

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 18:00:08