我發現很多關於整理和重音不敏感搜索的答案,閱讀1000篇有關此問題的帖子和文章,但沒有找到答案。MySQL - 使用波蘭語字符進行區分重音的搜索 - UTF8
有沒有人知道如何強制MySQL搜索與所有波蘭語字符不區分?也許有人得到了一個編譯的排序文件(Debian)?
請注意,:
- 設置整理到
utf8_general_ci
沒有幫助。它不正確地支持Ł
。但它確實破壞了搜索順序。 - 設置排序規則爲
utf8_unicode_ci
沒有幫助。同上。 - 編輯排序規則文件是不可能的,因爲它是多字節編碼。並且必須編譯多字節字符集。
- 將所有不支持的字母替換爲支持的字母不是解決方案。
我真的不明白爲什麼MySQL的工作人員不會將此威脅視爲一個錯誤。很明顯,它已經存在了很多年了。自4.xx他們確實正確Ś
信...所以爲什麼不Ł
?!
我發現了一些對This MySQL functionality的引用,但沒有關於如何使用它的信息。我真的不明白在那裏寫什麼,如果它能幫助我。
測試:
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)
我不明白,爲什麼Ł是一個問題,我們甚至用強大的4字節漢字表示MySQL來進行搜索? – jacouh
詢問MySQL的開發者。並且他們不認爲它是一個錯誤!過去5年報告爲10萬次,官方的答案是這不是一個錯誤。請檢查附加的例子。我編輯了問題。 –
我不能幫你,因爲我沒有擦亮控制檯。你使用select str來測試,比如'%Łomża%'\ G;爲什麼你要用str來檢索select str,比如'%Łomza%'\ G,這在邏輯上返回一個空集?我插入str作爲utf8_general_ci,like運算符似乎通過PHP/PDO/MySQL工作。 – jacouh