MySQL条件查询需求:基于LIKE匹配的价格字段处理逻辑
调整后的MySQL实现方案
嘿,我来帮你搞定这个SQL逻辑调整的需求~ 这里我们可以用MySQL的CASE WHEN语句来实现多条件分支判断,完美适配你的要求:
SELECT CASE -- 先判断匹配%|ss|24|%的情况,直接返回0 WHEN prices LIKE "%|ss|24|%" THEN 0 -- 匹配%|ss|2|%时,沿用原逻辑:price为空则返回0,否则返回price WHEN prices LIKE "%|ss|2|%" THEN IF(price IS NULL, 0, price) -- 可选:如果还有其他情况,这里可以定义默认返回值,比如沿用原逻辑 ELSE IF(price IS NULL, 0, price) END AS adjusted_price FROM trips WHERE id = 9 AND (prices LIKE "%|ss|2|%" OR prices LIKE "%|ss|24|%");
几个关键细节要注意
- 条件顺序优先级:一定要把
%|ss|24|%的判断放在前面!如果某条记录的prices字段同时包含|ss|2|和|ss|24|,CASE WHEN会执行第一个匹配的分支,这样能确保这种情况优先返回0,符合你的需求。 - 空值判断语法修正:原SQL里的
price == null是错误写法,MySQL中判断字段是否为空必须用price IS NULL,==不是合法的空值判断语法哦。 - WHERE子句的筛选逻辑:用
OR连接两个LIKE条件,确保只查询符合这两种模式的记录;如果你的业务需要保留其他记录,也可以去掉这个OR条件,根据实际场景调整。
内容的提问来源于stack exchange,提问作者Ulasoft Koinot Uz
相关产品推荐
相关产品推荐

