SQL问题:如何筛选students表中首字母为A-M范围的学生?
解决姓名首字母A-M范围筛选无结果的问题
首先,[A-M]%这种通配符写法仅适用于SQL Server、Access等数据库,如果你用的是MySQL、PostgreSQL等,LIKE语法不支持这种字符范围匹配,这就是你没得到结果的核心原因。以下分数据库给出正确写法:
1. MySQL/MariaDB场景
用REGEXP或RLIKE实现正则匹配:
SELECT * FROM student WHERE student_first_name REGEXP '^[A-Ma-m]';
或者用字符串比较逻辑(区分大小写):
SELECT * FROM student WHERE student_first_name >= 'A' AND student_first_name < 'N';
需忽略大小写的话,可统一转换为小写后判断:
SELECT * FROM student WHERE LOWER(student_first_name) >= 'a' AND LOWER(student_first_name) < 'n';
2. SQL Server/Access场景
检查是否存在大小写不匹配问题,比如姓名首字母是小写,可调整匹配规则:
SELECT * FROM student WHERE student_first_name LIKE '[A-Ma-m]%';
或者统一转换为大写后匹配:
SELECT * FROM student WHERE UPPER(student_first_name) LIKE '[A-M]%';
3. PostgreSQL场景
用~操作符执行正则匹配:
SELECT * FROM student WHERE student_first_name ~ '^[A-Ma-m]';
或者用ILIKE实现忽略大小写的范围匹配:
SELECT * FROM student WHERE student_first_name ILIKE '[A-M]%';
额外提醒:你问题里提到的是students表,但SQL语句里写的是student,请确认表名是否完全一致,这也可能导致查询无结果。
内容的提问来源于stack exchange,提问作者Foze
相关产品推荐
相关产品推荐

