我有一个数据库,我们在其中存储用户名,每个名字的首字母大写——即 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 集之外的 unicode 字符执行相同操作时,就没有这样的运气了:
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,这是一个已知的 unicode 排序错误,修复它是“新功能”的优先事项——即,不会在任何合理的时间范围内完成)。

有没有人发现任何允许在 MySQL 中不区分大小写搜索 unicode 字符的有效解决方法?任何想法表示赞赏!

最佳答案

使用 5.1.42-community 版本对我来说很好用

也许您的 mysql 客户端没有正确发送 unicode 字符。我用 sqlYog 进行了测试,它在 utf8_unicode_ci 和 utf8_general_ci 排序规则中都很好用

关于mysql - MySQL 中不区分大小写的 unicode 排序规则,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4413024/

10-16 14:43