2009-06-26 69 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

相關問題