开发者

How do I select by a range of starting characters?

Here is my mySQL query:

SELECT *
FROM `eodList` 
WHERE datechanged>='$curdate' 
GROUP BY symbolName 
ORDER开发者_Go百科 BY dateChanged DESC

How do I get all rows (for example) where symbolName starts with letters A-F?


Update:

I need something that can be easily changed to another range without alot of code changes.


Faster than Regular expressions and SUBSTRING() function calls. This will use the index of symbolName :

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

There is an issue with the case sensitivity though. Do you want names which start with a..f too or not?

If you want only names that start with uppercase and the table has utf8 character set, use:

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

For other character sets, use the corresponding _bin collation.


Try with Regex

WHERE symbolName REGEXP '^[A-F]'


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
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜