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

如何正确结合BETWEEN条件与多个LIKE表达式?SQL筛选异常解决

解决SQL筛选逻辑错误的问题

你的问题出在SQL逻辑运算符的优先级上:AND的优先级高于OR,所以原语句的实际执行逻辑是:筛选「标题以S开头的所有电影」,或者「标题以T开头且重置成本在15.99-20.99之间的电影」,这就导致重置成本低于15.99的S开头电影也被包含进来了。

修正方案

方案1:给标题条件加括号(所有SQL数据库通用)

把标题的两个LIKE条件用括号包裹,让它们作为一个整体,再和重置成本的条件用AND关联,确保两个条件同时满足:

SELECT title, length, replacement_cost
FROM film
WHERE (title LIKE 'S%' OR title LIKE 'T%')
AND replacement_cost BETWEEN 15.99 AND 20.99;

方案2:用正则表达式简化标题判断(部分数据库支持)

如果你的数据库支持正则表达式(比如PostgreSQL、MySQL、SQLite等),可以用正则匹配以S或T开头的标题,代码更简洁:

  • PostgreSQL版本:
SELECT title, length, replacement_cost
FROM film
WHERE title ~ '^[ST]'
AND replacement_cost BETWEEN 15.99 AND 20.99;
  • MySQL版本:
SELECT title, length, replacement_cost
FROM film
WHERE title REGEXP '^[ST]'
AND replacement_cost BETWEEN 15.99 AND 20.99;

关于IN搭配LIKE的问题

IN确实无法和LIKE兼容,因为IN是用来匹配固定的精确值列表,而LIKE是模糊匹配模式,两者逻辑不匹配,所以这个思路行不通。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 14:09:51