MySQL слишком умён в отношении акцентированных символов - PullRequest
4 голосов
/ 18 августа 2011

Полагаю, обычно люди стремятся заставить свою программу вести себя так, но в моем случае это полностью противоположно тому, что я хочу.

Каким-то образом моя база данных MySQL способна читать различные акцентированные символыкак идентичные.Например, shī, shí, shǐ, shì и shi - это одно и то же.Когда я ищу один, я получу и других.Proofpic:

smart SQL

Это не то, что я хочу, так как для меня эти значения очень разные.По сути, запрос на рисунке должен возвращать пустые строки, потому что в этой таблице нет ни одной записи с shi (без акцента).

Тип моих таблиц - InnoDB, параметры сортировки - utf8_general_ci.

1 Ответ

2 голосов
/ 18 августа 2011

Использовать utf8_bin сопоставление.Вам не нужно изменять параметры сортировки всего столбца, вы можете просто использовать его для каждого запроса

WHERE `pinyin` = 'shi' COLLATE utf8_bin

Вы также можете поэкспериментировать с различными параметрами сортировки, которые могут работать лучше для вас (utf8_bin работает на складеуровень, поэтому даже если два символа Юникода с разными байтовыми кодами одинаковы, он будет видеть их как разные).

...