2014-02-06 58 views
0

我从数据库中选择了一系列字母的姓氏。一切正常,除了以Z开头的名字。显然,BETWEEN子句不包含Z,它包含了其他范围中的字母。有没有简单的方法来处理这个问题?MYSQL之间的条款

$range1 = "V"; 
$range2 = "Z"; 
$sql = "SELECT id,first,last FROM users WHERE last BETWEEN '$range1' AND '$range2' ORDER BY last ASC"; 

该查询将不包括以字母Z开头的名称。但是如果范围是A-G,则包含G的名称。

+3

“last”中只有_single_字母吗?因为'G''''''G'',但'Gandthensomething'>'G''。 – Wrikken

回答

0

根本问题是系统会将字符数据转换为ascii等价物。当它这样做时,Z <但不等于斑马,所以你需要z之后的下一个ASCII字符。如果Z是90,那么[是91.所以如果你想要大写A和Z的所有扩展之间的一切,那么你需要它小于[范围2.

或者只是比较第一个字母而不是整个字符串。

+0

我明白你在说什么了。我只是做了我的范围V-ZZ。额外的z确保包含第一个Z之后的所有后续字符。谢谢。 – stevenpepe

+1

只要你没有ZZa的姓氏,那也可以。或Z'cho你得到的照片。 – xQbert