2

这是我的 mySQL 查询:

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

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


更新:

我需要一些无需大量代码更改即可轻松更改为另一个范围的东西。

4

3 回答 3

6

Regular expressionsSUBSTRING()函数调用更快。这将使用 的索引symbolName

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

但是,区分大小写存在问题。你想要以a..ftoo 开头的名字吗?

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

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

对于其他字符集,请使用相应的_bin排序规则。

于 2011-07-16T09:47:19.030 回答
5

尝试使用正则表达式

WHERE symbolName REGEXP '^[A-F]'
于 2011-07-15T14:31:17.373 回答
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
于 2011-07-15T14:32:25.110 回答