获取第一个字符不是字母数字的行

时间:2009-06-26 22:40:03

标签: mysql sql database regex

我正在为我正在处理的一个小项目添加一些新功能,其中一个是alpha分页,看起来像

  

#0-9 A B C D E ... X Y Z

我可以使用

之类的东西轻松地通过第一个字母获取项目
SELECT * FROM ... WHERE name LIKE 'A%' ...

将以数字和所有其他字符开头的所有内容分组有点困难,我认为它必须使用MySQLs REGEXP。

为了清楚起见,我需要帮助创建两个查询,这些查询将获取

所有的行
  • 列的第一个字符是数字
  • 列的第一个字符不是字母数字

1 个答案:

答案 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],但它更长。 : - )

另见MySQL REGEXP Reference