HackerRank Weather Observation Station 8 SQL解法提交不通过求助
问题根因
你提交的查询无法通过判题的核心原因是:LIKE语法中[AEIOU]形式的方括号字符集匹配规则,仅在SQL Server、Microsoft Access等特定数据库引擎中生效,HackerRank本题的判题环境为MySQL,不支持该语法,运行时会将方括号识别为普通字符匹配,无法得到正确结果。
可通过的参考解法
以下两种写法均可在HackerRank环境下正常通过:
- 写法1:基础LIKE组合匹配,兼容性最好
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%') AND (CITY LIKE '%a' OR CITY LIKE '%e' OR CITY LIKE '%i' OR CITY LIKE '%o' OR CITY LIKE '%u');
注意:本题测试数据的城市名首字母为大写、尾字母为小写,匹配时需要对应大小写规则,否则会出现结果遗漏。
- 写法2:使用MySQL支持的正则匹配,写法更简洁
SELECT DISTINCT CITY FROM STATION WHERE CITY REGEXP '^[aeiouAEIOU].*[aeiouAEIOU]$';
正则规则说明:
^标记字符串起始位置[aeiouAEIOU]匹配任意大小写的元音字母.*匹配中间任意长度的任意字符$标记字符串结束位置
内容的提问来源于stack exchange,提问作者Rashad Nelson
相关产品推荐
相关产品推荐

