问题
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))
来源:https://stackoverflow.com/questions/12098649/how-to-find-all-upper-case-strings-in-a-mysql-table