您可能需要使用区分大小写的排序规则。我相信默认值不区分大小写。例:
CREATE TABLE my_table ( id int, name varchar(50)) CHARACTER SET latin1 COLLATE latin1_general_cs;INSERT INTO my_table VALUES (1, 'SomeThing');INSERT INTO my_table VALUES (2, 'something');INSERT INTO my_table VALUES (3, 'SOMETHING');INSERT INTO my_table VALUES (4, 'SOME4THING');
然后:
SELECt * FROM my_table WHERe name REGEXP '^[A-Z]+$';+------+-----------+| id | name |+------+-----------+| 3 | SOMETHING |+------+-----------+1 row in set (0.00 sec)
如果您不想在整个表中使用区分大小写的排序规则,则也可以使用其他答案中建议的@kchau
COLLATE子句。
让我们尝试使用不区分大小写的排序规则的表:
CREATE TABLE my_table ( id int, name varchar(50)) CHARACTER SET latin1 COLLATE latin1_general_ci;INSERT INTO my_table VALUES (1, 'SomeThing');INSERT INTO my_table VALUES (2, 'something');INSERT INTO my_table VALUES (3, 'SOMETHING');INSERT INTO my_table VALUES (4, 'SOME4THING');
这不能很好地工作:
SELECt * FROM my_table WHERe name REGEXP '^[A-Z]+$';+------+-----------+| id | name |+------+-----------+| 1 | SomeThing || 2 | something || 3 | SOMETHING |+------+-----------+3 rows in set (0.00 sec)
但是我们可以使用
COLLATE子句将名称字段整理为区分大小写的整理:
SELECt * FROM my_table WHERe (name COLLATE latin1_general_cs) REGEXP '^[A-Z]+$';+------+-----------+| id | name |+------+-----------+| 3 | SOMETHING |+------+-----------+1 row in set (0.00 sec)



