2013-08-02 33 views
1

我想要顯示名稱的數據庫表的結果,我只想顯示名稱與初始A - D,如開始與A,B,C和d。我想知道是否可以在LIKE子句中使用多個值,如LIKE a%,b%,c%,d%。我想知道它是否會起作用,以及是否有更合適的方法來實現這一目標。如何顯示結果使用SQL其中名稱從初始A - D

回答

3

您可以使用多個LIKE條款通過OR分離:

SELECT * FROM names WHERE name LIKE 'A%' OR name LIKE 'B%' OR name LIKE 'C%' OR name LIKE 'D%' 

或者你可以使用正則表達式(REGEXP):

SELECT * FROM names WHERE name REGEXP '^[A-Da-d]' 

編輯

這裏的其他方法UCASESUBSTR,並IN

SELECT * FROM names WHERE UCASE(SUBSTR(name, 1, 1)) IN ('A', 'B', 'C', 'D') 
0

%是通配符來表示任何字符,因爲這個原因,可能不是你想要的。

一個更好的方法是使用MySQL的REGEXP所以你查詢變爲:

SELECT x, y, z FROM people WHERE first_name REGEXP '^[A-z]';` 

你可以找到更多在這裏:

http://dev.mysql.com/doc/refman/5.6/en/regexp.html

+0

Downvote爲了什麼? – AlexP

0

一個簡單的方法,我能很快弄清楚是:

SELECT field_a FROMWHERE field_a like 'a%' OR field_a like 'b%' OR field_a like 'c%' OR field_a like 'd%'

1

我認爲最簡潔的方法是:

select t.* 
from t 
where left(name, 1) in ('A', 'B', 'C', 'D') 

或者更短:

select t.* 
from t 
where left(name, 1) between 'A' and 'D'; 

注意的是,雖然這些都是帽子,攀比可能是不區分大小寫(關於MySQL默認值),所以'a','b','c'和'd'將與這些匹配。

或者,你可以把它甚至與玄之又玄短:

select t.* 
from t 
where name >= 'A' and name < 'E'; 
0
select t.* from t where name between 'A' and 'E'; 

應該工作

相關問題