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

为何MySQL LIKE '[aeiouAEIOU]%'在W3Schools可用却在HackerRank失效?

为什么MySQL中LIKE '[aeiouAEIOU]%'无效,而REGEXP '^[aeiouAEIOU]'有效?

核心原因是不同SQL数据库对LIKE语法的支持存在差异:

  • MySQL的LIKE运算符仅支持两种基础通配符:%(匹配任意长度的任意字符)和_(匹配单个任意字符),完全不支持[字符集]这种正则风格的范围匹配。你在W3Schools测试时,大概率用的是SQL Server、Access这类支持方括号语法的数据库,所以那段代码能正常运行;但放到MySQL环境(比如HackerRank使用的MySQL)里,[aeiouAEIOU]会被当成字面量字符串去匹配——也就是只会查找以[aeiouAEIOU]这个具体字符串开头的城市,自然查不到符合要求的结果。

  • 而REGEXP(MySQL也支持用RLIKE作为别名)是MySQL专门处理正则表达式匹配的运算符,^[aeiouAEIOU]的含义是:匹配以a/e/i/o/u(含大小写)中任意一个字符开头的字符串,完全契合你的查询需求,所以在HackerRank的MySQL环境中可以正常生效。

两段代码对比

无效代码(MySQL不支持):

SELECT DISTINCT CITY 
FROM STATION
WHERE CITY LIKE '[aeiouAEIOU]%';

有效代码(MySQL正则匹配写法):

SELECT DISTINCT CITY
FROM STATION
WHERE CITY REGEXP '^[aeiouAEIOU]'
ORDER BY CITY;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 06:06:01