我试图选择数据库中以小写字母开头的所有字符串,但出于某种原因,它也选择了以大写字母开头的所有字符串。我做错了什么?
SELECT *
FROM `allData`
WHERE response REGEXP '^[a-z]'
LIMIT 0 , 30
发布于 2016-06-16 12:42:38
除了与二进制字符串一起使用时,REGEXP不区分大小写。
因此,在使用二进制字符串时,您可能会有一些运气:
WHERE response REGEXP BINARY '^[a-z]'
相当愚蠢的演示小提琴:http://sqlfiddle.com/#!9/7eade/3
编辑:正如Ray在评论中所说的,您应该使用[[:lower:]]
来跨所有排序规则工作。
WHERE response REGEXP BINARY '^[[:lower:]]'
发布于 2016-06-16 12:51:07
我将使用mysql的字符类名与REGEXP BINARY
进行匹配:
WHERE response REGEXP BINARY '^[[:lower:]]'
我不知道[a-z]
在每个字符集和排序规则中是否有意义,因为作为字符类名,[:lower:]
总是匹配所有小写alpha字符。
发布于 2016-06-16 12:45:47
SELECT *
FROM allData
WHERE LOWER(LEFT(response, 1)) <> LEFT(response, 1)
LIMIT 0 , 30
...however,这可能受到MySQL character collation的限制
https://stackoverflow.com/questions/37868952
复制相似问题