How do I make MySQL\'s SELECT DISTINCT case sensitive?
create temporary table X (name varchar(50) NULL);
insert into X values (\'this\'), (\'This\');
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:
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
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;