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
精彩评论