我正在为我正在处理的一个小项目添加一些新功能,其中一个是alpha分页,看起来像
#0-9 A B C D E ... X Y Z
我可以使用
之类的东西轻松地通过第一个字母获取项目SELECT * FROM ... WHERE name LIKE 'A%' ...
将以数字和所有其他字符开头的所有内容分组有点困难,我认为它必须使用MySQLs REGEXP。
为了清楚起见,我需要帮助创建两个查询,这些查询将获取
所有的行答案 0 :(得分:36)
第一个字符是数字:
SELECT * FROM ... WHERE name REGEXP '^[0-9]';
第一个字符不是字母数字:
SELECT * FROM ... WHERE name REGEXP '^[^0-9A-Za-z]';
(请注意,这与NOT REGEXP ^[0-9A-Za-z]
不同,因为当 实际上是第一个字符时,您似乎仅想要匹配。)
您可以将[^[:alnum:]]
替换为[^0-9A-Za-z]
,但我尚未对其进行测试。您可以当然替换[[:digit:]]
代替[0-9]
,但它更长。 : - )