2014-01-10 32 views
4

我有隨機數的varchar /字母一個表作爲這樣的:MySQL:選擇所有以給定數字開頭的字段,下一個字符是字母?

1a 
101a 
101b 
101c 
11b 
14a 
14b 
14c 
14z 
108a 
108b 

,我想SELECT * FROM TABLE WHERE VAR = [SPECIFIC NUMBER]/FOLLOWING ANY LETTER

例如我使用這個錯誤方法,其中它選擇的一切開始於1:

SELECT * 
FROM `table` 
WHERE var LIKE '1%' 

這給了我所有上面的例子中,因爲所有的開始1 我想這隻能選擇:1a

回答

10

使用REGEXP

SELECT * 
FROM `table` 
WHERE var REGEXP '^1[[:alnum:]]' 

正則表達式的解釋:

  • ^字符串
  • 1開始爲您具體的數字
  • [[:alnum:]]一個alfanumeric字符 - 如果你想嚴格字母,使用alpha這裏。例如

SELECT * 
FROM `table` 
WHERE var REGEXP '^1[[:alpha:]]' 

Demo on SQL Fiddle

+3

這仍然返回的一切,雖然,我想表達的應該是' '^ 1 [az]' 可以'或'「^ 1:alnum:] '一個OP只想返回'1a'。 [關於SQL小提琴示例](http://sqlfiddle.com/#!2/56bcb/9) – GarethD

+0

不幸的是這選擇了很多http://i.imgur.com/nw0RwSK.png – jQuerybeast

+1

@GarethD你的方法是正確的。謝謝。寫一個答案我可以接受它 – jQuerybeast

相關問題