2013-07-15 31 views
1

我想弄清楚如何執行一個mysql查詢,其中我返回以(例如。)AD開頭的結果,又名將返回: - 動物 - 銀行 - 可樂 - 狗 但不是:圓頂冰屋獲取介於(包含)A和D之間的結果

似乎很簡單,但不能找出一個有效的方法來做到這一點。

我的意思是我能得到它基於一個字母:

SELECT * FROM table WHERE word LIKE 'A%' 

,但我怎麼能做到這一點與多個字母容易。我考慮過一個循環「將字母從A增加到D,但對字母沒有多大意義。思考?

+0

你試過'REGEXP'嗎? – deceze

+0

'$ letter ='A'; while($ letter!='E'){echo $ letter ++; (範圍('A','D')爲$字母){echo $ letter; }「這兩者都具有很大的意義;但在你的SQL中使用正則表達式是一個更好的解決方案 –

回答

7
SELECT * 
FROM table 
WHERE word REGEXP '^[A-D]'; 
+0

完美,謝謝:) – Andrew

+1

我不認爲這可以使用任何使大數據集緩慢的索引。 –

+0

@AndreasWederbrand這是真的,最快的選擇可能是添加一個只有小寫或大寫符號的世界的第一個字母的列,並在插入/更新記錄時填充它。 –

3

一個正常的between偉大的作品,可以使用索引。

Select * from table where word between 'a' and 'e' and word != 'e'; 

以'a'開頭的所有單詞都應該大於'a',所有以'd'開頭的單詞應小於'e'。

這是一個sqlfiddle來表明它在概念上的工作原理,並與正則表達式替代方法進行比較。查看執行計劃以瞭解如何使用索引。

+0

它不會工作 –

+0

似乎是在爲我工作幾次快速嘗試 – Andrew

+0

哇。沒有任何像運營商? –

相關問題