mysql - MySQL 中不区分大小写的 unicode 排序规则

标签 mysql unicode collation case-insensitive

我有一个数据库,我们在其中存储用户名,每个名字的首字母大写——即 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;博士,这是 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/

相关文章:

php - 从 PHP 查询 SQL Server

php - Mysql DELETE查询异常行为

mysql - Insert into Table 从另一个表和一个独立的值

java - 性能问题 - 在 java 的 unix box 中写入巨大的 csv 文件时花费太多时间,与 MYSQL DB 交互以对每条记录进行交叉检查

python - 解决 ascii codec can't decode byte in position ordinal not in range

MySQL存储过程需要比较具有不同排序顺序的2列

mysql - MySQL非法混合排序规则

java - 我应该将 mysql 数据加载到数组中还是只是使用 java 查询数据库

string - Unicode转义中的Scala原始字符串错误

python - 如何检查字符串中的 unicode 或转义序列?