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

MySQL中LIKE与IN能否同时使用?附HackerRank查询问题疑惑

问题分析与解决方案

你的语句问题所在

你写的IN ('a%','e%','i%','o%','u%')是错误用法——IN仅用于匹配精确字符串,它不会把%当成通配符处理。这条语句实际是在找城市名完全等于'a%'、'e%'这类字符串的记录,而非以元音开头的城市,所以查不到任何结果。

LIKE与IN能否同时使用?

不能直接像你那样混用,但可以通过其他方式实现类似逻辑:

方案1:多个LIKE条件用OR连接

这是最直观的写法,拆分每个元音开头的匹配条件:

SELECT DISTINCT city FROM STATION 
WHERE city LIKE 'a%' 
   OR city LIKE 'e%' 
   OR city LIKE 'i%' 
   OR city LIKE 'o%' 
   OR city LIKE 'u%';

方案2:取首字母后用IN匹配

通过LEFT()函数提取城市名的第一个字符,再用IN匹配元音列表:

SELECT DISTINCT city FROM STATION 
WHERE LEFT(city, 1) IN ('a','e','i','o','u');

方案3:使用正则表达式

MySQL支持REGEXP操作符,用正则可以更简洁实现匹配:

SELECT DISTINCT city FROM STATION 
WHERE city REGEXP '^[aeiou]';

这里^表示字符串开头,[aeiou]表示匹配括号内任意一个字符。

为什么不能直接结合LIKE和IN?

核心原因是IN的设计逻辑是精确匹配列表中的值,它不支持通配符语法;而LIKE是专门用于模糊匹配、识别通配符的操作符,两者语法逻辑不兼容,无法直接组合使用。

内容的提问来源于stack exchange,提问作者Anish Kumar Giri

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 22:33:20