如何检查MySQL中的大写字母?

R_U*_*ser 11 regex mysql uppercase

我想检查,如果一个字符串只包含大写字母.我知道RLIKE/REGEXP在MySQL中不区分大小写.所以我尝试使用:upper:字符类:

SELECT 'z' REGEXP '^[[:upper:]]+$';
Run Code Online (Sandbox Code Playgroud)

这是真的,虽然z是小写的,...为什么?

Kyl*_*son 27

REGEXP不区分大小写,除非与二进制字符串一起使用.

http://dev.mysql.com/doc/refman/5.7/en/regexp.html

所以考虑到这一点,只需做这样的事情:

SELECT * FROM `users` WHERE `email` REGEXP BINARY '[A-Z]';
Run Code Online (Sandbox Code Playgroud)

使用上面的示例,您将获得包含一个或多个大写字母的电子邮件列表.


Elz*_*ugi 9

对我来说,这有效,并且没有使用正则表达式。它基本上将字段与mysql本身的大写字母进行比较。

-- will detect all names that are not in uppercase
SELECT 
    name, UPPER(name) 
FROM table 
WHERE 
    BINARY name <> BINARY UPPER(name)
;
Run Code Online (Sandbox Code Playgroud)


Joh*_*Woo 7

更改为区分大小写的排序规则,例如。

CHARACTER SET latin1 COLLATE latin1_general_cs
Run Code Online (Sandbox Code Playgroud)

然后试试这个查询,

SELECT 'z' REGEXP '^[A-Z]+$'
Run Code Online (Sandbox Code Playgroud)