2013-08-31 177 views
0

我有一個簡單的名稱表,一些以字母開頭,一些以數字開頭。我試圖過濾出以數字開頭的名字,並且只選擇以字母開頭的名字。MySQL使用WHERE子句與多個LIKE

這裏有一些我的嘗試,這也未能產生預期的效果:

SELECT name 
    from subjects 
WHERE name LIKE ('A%') AND 
WHERE name LIKE ('B%') AND 
WHERE name LIKE ('C%')...; 

SELECT name 
    from subjects 
WHERE name LIKE ('A%', 'B%', 'C%', ...); 

SELECT name 
    from subjects 
WHERE name LIKE ('A%') AND ('B%') AND ('C%') ...; 

謝謝你,提前爲您的幫助。我非常感激。堆棧溢出一直是我的救世主,因爲我正在學習使用PHP和MySQL進行編程。 Lori

回答

1

更簡單的解決方案是使用regexp算子,而不是傳遞多個like s。

嘗試:

SELECT name from subjects WHERE name REGEXP '^[a-zA-Z]'; 

這將選擇名稱以小寫和大寫字母的所有記錄。

+0

謝謝!我認爲有一種使用正則表達式的方式,但這對我來說是一個新世界。 – Lori

0

您遇到的問題是您已包含多個wheres。簡單地刪除它們

SELECT name 
    from subjects 
WHERE name LIKE ('A%') AND 
name LIKE ('B%') AND 
name LIKE ('C%')...; 
+0

是的。謝謝。我明白,我的語法有點不合適。我現在看到如何使這項工作,但REGEX似乎是我最好的選擇。 – Lori

+1

他們應該是ORs,而不是ANDs。 –

0

嘗試正則表達式:

SELECT name 
FROM subjects 
WHERE name 
REGEXP '[A-Za-z]' 
+0

謝謝。我非常感激。 – Lori