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

Thi*_*ode 9 mysql string case-sensitive uppercase

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

Name
----
John
MARY
Kin
TED
Run Code Online (Sandbox Code Playgroud)

我想查询MARY和TED,它们都是大写的.我该如何查询?

Mar*_*ers 35

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

SELECT *
FROM yourtable
WHERE Name = BINARY UPPER(Name)
Run Code Online (Sandbox Code Playgroud)

看到它在线工作:sqlfiddle


m_v*_*aly 6

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

select Name from Table where Name = UPPER(Name)
Run Code Online (Sandbox Code Playgroud)

这条路

UPPER(Name)   ||  Name
---------------------------------------
JOHN          !=  John
MARY          ==  MARY
KIN           !=  Kin
TED           ==  TED
Run Code Online (Sandbox Code Playgroud)

只返回您需要的行.

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

  • 取决于排序规则和数据类型.如果数据类型是非二进制的并且排序规则是例如latin1,则字符串比较将不区分大小写.所以我相信Mark Byers的答案是迄今为止最准确的. (2认同)