2009-06-26 70 views
12

我增加了一些新的功能,以一个小项目,我的工作,其中之一是阿尔法分页看起来像取行,其中第一个字符是字母不

#0-9 ABCDE .. 。XYZ

我可以很容易地获取由使用的东西他们的第一个字母的项目,如

SELECT * FROM ... WHERE name LIKE 'A%' ... 

分组一切以数字和其他字符开头是有点难度,我认为它将不得不使用MySQL REGEXP。

只是要清楚,我需要帮助建立两个查询将获取所有行

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

回答

33

第一个字符是数字:

SELECT * FROM ... WHERE name REGEXP '^[0-9]'; 

首先CHARACT呃不是字母:

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

相关问题