我最初认为这是微不足道的。然后认为'二进制'可能会这样做。我不确定这一点。
Name
----
John
MARY
Kin
TED
我想查询全部大写的MARY和TED。我该如何查询?
答案 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))