How to find all upper case strings in a MySQL tabl

2020-05-21 04:28发布

问题:

I initially thought this is trivial. Then thought 'binary' might do it. I am unsure at this point.

Name
----
John
MARY
Kin
TED

I would like to query just MARY and TED which are in all upper case. How would I query this?

回答1:

If your collation is case insensitive then you need to use a BINARY comparison:

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

See it working online: sqlfiddle



回答2:

You just use the UPPER() function on the Name field and compare the results with the original value of Name:

select Name from Table where Name = UPPER(Name)

This way

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

only the rows you need will be returned.

As @mdoyle commented here, you should define the column with the right collation (case sensitive), otherwise as others did answer you need the BINARY operator to compare case insensitive columns.



回答3:

Try this:

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


回答4:

Try this:

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


回答5:

Use Below:

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


回答6:

This will also return numeric values, but that doesnt look to be an issue for your column name.

SELECT * FROM names WHERE 

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