У меня есть база данных, в которой мы храним имена пользователей с заглавной первой буквой каждого имени - то есть IsaacSparling.Я пытаюсь выполнить автозаполнение без учета регистра для моей базы данных MySQL (v5.1.46).Таблица содержит кодировку UTF8 и сопоставление utf8_unicode_ci.Я также провел эти тесты для сопоставления utf8_general_ci.
Простой текст ASCII работает отлично:
mysql> select username from users where username like 'j%';
+----------------+
| username |
+----------------+
| J******** |
| J*********** |
| J************* |
+----------------+
3 rows in set (0.00 sec)
mysql> select username from users where username like 'J%';
+----------------+
| username |
+----------------+
| J******** |
| J*********** |
| J************* |
+----------------+
3 rows in set (0.00 sec)
(имена отредактированы, но они есть).
Однако, когда я пытаюсь сделать то же самое для символов Юникода вне набора ASCII, не повезло:
mysql> select username from users where username like 'ø%';
Empty set (0.00 sec)
mysql> select username from users where username like 'Ø%';
+-------------+
| username |
+-------------+
| Ø********* |
+-------------+
1 row in set (0.00 sec)
Некоторые исследования привели меня к этому: http://bugs.mysql.com/bug.php?id=19567 (tl; dr,это известная ошибка с сопоставлениями Юникода, исправление которой имеет приоритет «новая функция», т. е. не будет завершено в течение любого разумного периода времени.
Кто-нибудь обнаружил какие-либо эффективные обходные пути, позволяющиерегистронезависимый поиск символов юникода в MySQL?Любые мысли приветствуются!