如何在MySQL表中查找所有大写字符串?

时间:2012-08-23 19:24:50

标签: mysql string case-sensitive uppercase

我最初认为这是微不足道的。然后认为'二进制'可能会这样做。我不确定这一点。

Name
----
John
MARY
Kin
TED

我想查询全部大写的MARY和TED。我该如何查询?

6 个答案:

答案 0 :(得分:35)

如果您的排序规则不区分大小写,则需要使用BINARY比较:

SELECT *
FROM yourtable
WHERE Name = BINARY UPPER(Name)

查看在线工作:sqlfiddle

答案 1 :(得分:6)

您只需使用Name字段上的UPPER()功能,并将结果与​​Name的原始值进行比较:

select Name from Table where Name = UPPER(Name)

这样

UPPER(Name)   ||  Name
---------------------------------------
JOHN          !=  John
MARY          ==  MARY
KIN           !=  Kin
TED           ==  TED

只返回您需要的行。

正如@mdoyle在这里评论的那样,您应该使用正确的排序规则定义列(区分大小写),否则当其他人确实回答时,您需要使用BINARY运算符来比较不区分大小写的列。

答案 2 :(得分:2)

试试这个:

select name from table where name=upper(name);

答案 3 :(得分:1)

试试这个:

SELECT Name
FROM   table
WHERE  Name COLLATE latin1_general_cs LIKE UPPER(Name)
;

答案 4 :(得分:1)

使用下方:

SELECT name FROM table WHERE name = BINARY UPPER(column_name);

答案 5 :(得分:0)

这也将返回数值,但这看起来不是列名的问题。

SELECT * FROM names WHERE 

ASCII(name) = ASCII(Upper(name))