我找到了很多关于排序规则和口音不敏感搜索的答案,阅读了 1000 篇关于这个问题的帖子和文章,但没有找到答案。
有人知道如何强制 mysql 搜索对所有波兰语字符不敏感的重音吗?也许有人得到了那个(Debian)的编译整理文件?
请注意:
- 将排序规则设置为
utf8_general_ci
没有帮助。它不支持Ł
正确。但它确实破坏了搜索顺序。 - 将排序规则设置为
utf8_unicode_ci
没有帮助。和上面一样。 - 无法编辑排序规则文件,因为它是多字节编码。并且必须编译多字节字符集。
- 将所有不受支持的字母替换为受支持的字母不是解决方案。
我真的不明白为什么 MySQL 工作人员不把它当作一个错误来威胁。很明显,确实如此,而且已经存在了很长时间。从 4.xx 开始,他们做了正确的Ś
字母......那为什么不Ł
呢?!
我发现了一些对这个 MySQL 功能的引用,但没有关于如何使用它的信息。我真的不明白那里写的是什么以及它是否可以帮助我。
测试:
mysql> show full columns from test;
+-------+--------------+----------------+------+-----+---------+-------+---------------------------------+---------+
| Field | Type | Collation | Null | Key | Default | Extra | Privileges | Comment |
+-------+--------------+----------------+------+-----+---------+-------+---------------------------------+---------+
| str | varchar(255) | utf8_polish_ci | YES | | NULL | | select,insert,update,references | |
+-------+--------------+----------------+------+-----+---------+-------+---------------------------------+---------+
mysql> insert into test values('Łomża');
...
mysql> select str from test where str like '%Łomża%'\G
*************************** 1. row ***************************
str: Łomża
mysql> select str from test where str like '%Łomza%'\G
Empty set (0.00 sec)
--
mysql> select str from test where str like '%Łomza%' collate utf8_general_ci\G
*************************** 1. row ***************************
str: Łomża
mysql> select str from test where str like '%Lomza%' collate utf8_general_ci\G
Empty set (0.00 sec)
--
mysql> select str from test where str like '%Łomza%' collate utf8_unicode_ci\G
*************************** 1. row ***************************
str: Łomża
mysql> select str from test where str like '%Lomza%' collate utf8_unicode_ci\G
Empty set (0.00 sec)