如何选择一系列起始字符?

时间:2011-07-15 14:26:30

标签: mysql database select range startswith

这是我的mySQL查询:

SELECT *
FROM `eodList` 
WHERE datechanged>='$curdate' 
GROUP BY symbolName 
ORDER BY dateChanged DESC

如何获取symbolName以字母A-F开头的所有行(例如)?


更新

我需要一些可以很容易地改变到另一个范围的东西而不需要很多代码更改。

3 个答案:

答案 0 :(得分:6)

尝试使用Regex

WHERE symbolName REGEXP '^[A-F]'

答案 1 :(得分:6)

Regular expressionsSUBSTRING()函数调用快。这将使用symbolName

的索引
WHERE symbolName >= 'A' 
  AND symbolName < 'G'

虽然案例敏感性存在问题。您是否想要以a..f开头的名字?

如果您只想要以大写字母开头且表格有utf8字符集的名称,请使用:

WHERE symbolName >= 'A' COLLATE utf8_bin
  AND symbolName < 'G' COLLATE utf8_bin

对于其他字符集,请使用相应的_bin归类。

答案 2 :(得分:0)

SELECT *
FROM `eodList` 
WHERE datechanged>='$curdate' AND


((SUBSTRING(symbolName, 1, 1) >= "A" AND SUBSTRING(symbolName, 1, 1) <="F"))
GROUP BY symbolName 
ORDER BY dateChanged DESC