在MySQL 5.5中,搜索结果对带有utf8_general_ci排序规则和utf8字符集-服务器的德语标号是区分大小写的。我的数据库表say der和Öder.When中有两个值,我运行了一个查询来使用关键字‘der’搜索字符串,只有der作为搜索结果检索,并且从retrieved.If i开始的‘e’rder‘不是retrieved.If i在MySQL服务器的my.cnf文件中将字符集服务器更改为latin1,并将排序规则更改为latin1_general_ci(与对应的数据库和表相同的字符集和排序规则更改为latin1 I),它工作得很好,即两个值都是在search中检索的,result.But是否有一种方法可以用utf8作为字符集服务器来实现对德国货币的毫无意义的搜索?
发布于 2017-05-31 21:06:26
使用mysql命令行工具来测试:
mysql> SELECT 'Ö' = 'ö' COLLATE utf8_general_ci;
+-------------------------------------+
| 'Ö' = 'ö' COLLATE utf8_general_ci |
+-------------------------------------+
| 1 |
+-------------------------------------+1表示true,0表示false。
任何utf8_..._ci排序规则都将一组重音/非重音、大写/小写字符视为相等。例如,utf8mb4_german2_ci说这些是相等的:O=o=º=Ò=Ó=Ô=Õ=ò=ó=ô=õ和oe=Ö=ö=Œ=œ之前的排序。
http://mysql.rjweb.org/utf8_collations.html是对大多数utf8排序规则中大多数字母所处位置的简要介绍。
在大多数情况下,_general_ci不如_unicode_ci好,而_unicode_520_ci不如_unicode_520_ci,后者将被MySQL 8.0中的Unicode9.0标准所取代。
我认为german2的目标是“电话簿”校对。但也许不是。在8.0中,utf8mb4_german2_ci整理了D=d=Ď=ď < Dž=dz=dž < Ð=ð。但utf8mb4_de_pb_0900_ai_ci有D=d=Ð=ð=Ď=ď < Dž=dz=dž。更多细节http://mysql.rjweb.org/utf8mb4_collations.html。
https://stackoverflow.com/questions/44184772
复制相似问题