2013-05-16 42 views
1

好使用REGEXP特殊字符查找記錄,所以我想獲取該以數字開頭的結果,如果我想它,我有這個正則表達式查找只有數字條目開始在MYSQL

SELECT * FROM dbname WHERE subject REGEXP '^[0-9]' 

但什麼找到數字和所有特殊字符條目,我該怎麼做?因此,例如,如果一個主題是「:subject」或「.subject」或「* subject」等,它會發現它們以及「1subject」或「2subject」等等...... 基本上,任何東西開始除了一個aplhabetical性質的東西。

謝謝。

回答

4

使用 '^[^a-zA-Z]' 作爲正則表達式

這意味着

首先^是 「錨線開始」

[是在字符類

^開始字符類意味着否定這個類 - 所以匹配其中的字符相反

a-z是全部小寫英文字母

A-Z全都是大寫英文字母

]是字符類的末尾

由於類是在它自己的它代表一個字符

所以正則表達式意思是「匹配任何不是az或AZ行的開頭字符」 在SQL表達式的上下文中,這應該匹配任何不以az或AZ開頭的結果

+0

是不是隻能按字母順序排列? – FoxyFish

+0

不 - 我在正則表達式中爲字符的含義添加了光澤。希望這可以幫助 – Vorsprung

+0

好的,謝謝你的解釋,真的有助於理解它實際上在做什麼。 – FoxyFish

0

你不需要使用正則表達式。您想要查找以A-Z或a-z開頭的主題。

WHERE (subject >= 'A' and subject < '[') OR (subject >= 'a' and subject < '{'); 

[是下一個字符後Z{z之後的下一個字符。

這將讓優化器使用您擁有的subject上的任何索引。