MySQL SELECT DISTINCT should be case sensitive?

前端 未结 3 503
旧巷少年郎
旧巷少年郎 2021-02-05 14:49

How do I make MySQL\'s SELECT DISTINCT case sensitive?

create temporary table X (name varchar(50) NULL);
insert into X values (\'this\'), (\'This\');


        
相关标签:
3条回答
  • 2021-02-05 14:59

    You can use a hashing function (MD5) and then group on that.

    SELECT Distinct(MD5(Cat)), Cat FROM (
      SELECT 'Cat'
        UNION ALL
      SELECT 'cat'
    ) AS BOW
    

    SQL Output:

    0 讨论(0)
  • 2021-02-05 15:16

    I would rather update the column definition to be case sensitive collision.

    Like this:

    create table X (name VARCHAR(128) CHARACTER SET utf8 COLLATE utf8_bin NULL);
    insert into X values ('this'), ('This'); 
    

    SQLFiddle: http://sqlfiddle.com/#!2/add276/2/0

    0 讨论(0)
  • 2021-02-05 15:17

    Use BINARY operator for that:

    SELECT DISTINCT(BINARY name) AS Name FROM X;
    

    You can also CAST it while selecting:

    SELECT DISTINCT 
    (CAST(name AS CHAR CHARACTER SET utf8) COLLATE utf8_bin) AS Name FROM X;
    

    See this SQLFiddle

    0 讨论(0)
提交回复
热议问题