2014-03-24 125 views
0

我正试图清理一些我从熊猫数据框导入到MySQL中的数据。当我使用MySQL SELECT DISTINCT不区分大小写?

SELECT DISTINCT 

Variable 

似乎MySQL的对待Variable作为equivilent到变量:

一些显示为:

VARIABLE 

别人的。

虽然R将Variable和VARIABLE视为不同,但我将其导入到R中。 运行

as.factor 

给了我两个因素。 如何让MySQL的SELECT DISTINCT区分大小写,以便我可以检测并修复导入到R中的数据进行分析?

+0

您可能正在使用不区分大小写的排序规则。你想要一个大小写敏感的。请阅读此处:http://dev.mysql.com/doc/refman/5.7/en/charset-collat​​e.html。 –

+0

[使用'在这个SO后看到'BINARY'](http://stackoverflow.com/questions/19462919/mysql-select-distinct-should-be-case-sensitive) –

+0

我把一切都设置为UTF-8更早在熊猫代码中如此BINARY blob的一切。我想我会考虑将MySQL COLLATION切换为默认情况下区分大小写。命令行上的任何指针? – KillerSnail

回答

0

如果你想检测下限和上限的情况下这是在你的表使用此

SELECT name      //this to select lower names 
    FROM yourtable 
    where name = BINARY LOWER(Name) 

    union all 

    SELECT name      //this to select upper names 
    FROM yourtable 
    where name = BINARY UPPER(Name) 

    union all      // this to select not lower and not upper 

    SELECT name 
    FROM yourtable 
    where name != BINARY UPPER(Name) 
    and name != BINARY LOWER(Name) 

DEMO HERE

0

你可以只使用:

SELECT DISTINCT BINARY Name 
FROM tablename 

BINARY运营商将蒙上一层字符串转换为BINARY字符串,并且二进制字符串之间的比较将区分大小写。