2011-11-02 56 views
1

是否有可能在MySQL中为特定范围的项目选择行?mysql - 选择从..到

例如,当我想按字母顺序选择名称的第一个字母在B和T之间的所有项目时。 我知道我可以使这是PHP也,但它会为我节省一点时间,如果这是可能的MySQL ...

是否有可能,如果是这样,如何?

理想的情况是这样的:

$sql="SELECT * FROM paths FROM name=name1 TO name=name6"; //which would select name1, 2, 3, 4, 5, 6. 

回答

6

使用BETWEEN基本上都会让你有,但你需要使用一个字母过去要结束。试验,直到你得到你想要的结果。

SELECT * FROM paths WHERE UPPER(name) BETWEEN 'B' AND 'U'; 

这里的想法是,任何以'T'开始的东西都会在以'U'开始之前按字母顺序排序。您需要通过UPPER()将其转换为大写,这样您才不会遇到潜在的排序问题。

因此您的结果可能是这样的:

B, 
Bill 
Bob 
Jane 
Tommy 
Travis 

Uwe(他是德国)将被排除在外。

+0

甜!谢谢!这正是我期待的!这也可以通过部分匹配来完成,例如当名称是BAA,BBB,CDA,CEF,PFE等时? – laarsk

+0

@laarsk部分匹配遵循相同的规则,所以是的,它应该工作。换句话说,只要它以'U'之前的东西开始,它就会包含在内。 –

+0

太好了,非常感谢! [仍然需要等待4分钟才能将此标记为答案...] – laarsk

0

您可以使用BETWEEN,如:

SELECT * FROM paths WHERE name BETWEEN 'B' AND 'U' 
+0

不,params 2应该是'name7',或者什么的,name6不会被中间夹住(因此其他人使用'U'来结束得到'T's –

+0

@ michael-durrant感谢您的评论,我改变了它.. – Kayser