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

SQLite中LIKE与IN运算符对比:如何用LIKE实现IN的查询效果?

用LIKE替代IN实现多匹配查询的问题

我想用LIKE运算符实现和IN运算符一样的查询结果,但之前写的LIKE语句只返回第一个匹配项(包含Success的结果)。目前已经通过IN语句得到了预期结果,想确认能不能用LIKE达成同样效果。

两段对比SQL代码

错误的LIKE写法(仅返回含Success的结果)

%%sql
SELECT Mission_Outcome, count(Mission_Outcome) as Count
FROM SPACEXTBL
WHERE Mission_Outcome LIKE '%Success%' or  '%Failure%'
GROUP BY Mission_Outcome 
ORDER BY Count DESC;

可用的IN写法(得到预期结果)

%%sql
SELECT Mission_Outcome, count(Mission_Outcome) as Count
FROM SPACEXTBL
WHERE Mission_Outcome IN ('Success', 'Failure (in flight)', 'Success (payload status unclear)')
GROUP BY Mission_Outcome 
ORDER BY Count DESC;

问题原因及修正方案

原来的LIKE写法有语法错误:or '%Failure%'没有指定匹配的字段,数据库会把这个字符串常量当作布尔值(非空字符串判定为真),但实际并没有让Mission_Outcome去匹配Failure相关内容,所以只会返回符合第一个LIKE '%Success%'的结果。

要实现和IN一样的效果,需要给每个LIKE条件都指定字段,修正后的SQL如下:

%%sql
SELECT Mission_Outcome, count(Mission_Outcome) as Count
FROM SPACEXTBL
WHERE Mission_Outcome LIKE '%Success%' OR Mission_Outcome LIKE '%Failure%'
GROUP BY Mission_Outcome 
ORDER BY Count DESC;

这样写后,所有包含Success或Failure的Mission_Outcome都会被筛选出来,和IN语句指定的三个值的匹配结果完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 23:45:39