SQL Query用于获取以A或B或C ..开头的名称

时间:2013-05-03 14:38:47

标签: mysql sql

我有一个表'name'(varchar)
的表 我希望所有行的名称都以“a”,“b”,“c”,“d”,“e”或“f”开头。
我已经构建了如下查询:
WHERE LEFT(u.name, 1)='a' OR LEFT(u.name, 1)='b' OR LEFT(u.name, 1)='c' OR LEFT(u.name, 1)='d' OR LEFT(u.name, 1)='e' OR LEFT(u.name, 1)='f'

有更好的方法吗?使用正则表达式可能吗?
并且假设我必须在更宽的范围内进行(A到M)它会减慢查询速度吗?

3 个答案:

答案 0 :(得分:9)

尝试使用IN

WHERE LEFT(u.name, 1) IN ('a', 'b', 'c', 'd', 'e', 'f')

通过这种方式,您可以定义所需的任何起始字符,即使它不是按顺序排列的。

答案 1 :(得分:3)

有太多的方法可以做到这一点:)除了其他答案,其中任何一个都有效:

u.name >= 'a' AND u.name < 'g'

LEFT(u.name, 1) BETWEEN 'a' AND 'g'

或使用正则表达式:

u.name REGEXP '^[a-f].*'

答案 2 :(得分:1)

u.name < 'g'出了什么问题?