我最初认为这是微不足道的。然后认为“二进制”可能会做到这一点。在这一点上我不确定。
Name
----
John
MARY
Kin
TED
我想只查询全部大写的 MARY 和 TED。我将如何查询这个?
我最初认为这是微不足道的。然后认为“二进制”可能会做到这一点。在这一点上我不确定。
Name
----
John
MARY
Kin
TED
我想只查询全部大写的 MARY 和 TED。我将如何查询这个?
如果您的排序规则不区分大小写,那么您需要使用BINARY
比较:
SELECT *
FROM yourtable
WHERE Name = BINARY UPPER(Name)
在线查看它:sqlfiddle
您只需在字段上使用UPPER()函数Name
并将结果与原始值进行比较Name
:
select Name from Table where Name = UPPER(Name)
这边走
UPPER(Name) || Name
---------------------------------------
JOHN != John
MARY == MARY
KIN != Kin
TED == TED
只会返回您需要的行。
正如@mdoyle 在这里评论的那样,您应该使用正确的排序规则(区分大小写)定义列,否则就像其他人回答的那样,您需要BINARY运算符来比较不区分大小写的列。
试试这个:
select name from table where name=upper(name);
试试这个:
SELECT Name
FROM table
WHERE Name COLLATE latin1_general_cs LIKE UPPER(Name)
;
下面使用:
SELECT name FROM table WHERE name = BINARY UPPER(column_name);
这也将返回数值,但这看起来不是您的列名的问题。
SELECT * FROM names WHERE
ASCII(name) = ASCII(Upper(name))