在MySQL 5.5中,搜索结果对于带有utf8_general_ci collation和utf8 character-set-server的德语变音符号区分大小写。我的数据库表中有2个值表示öder和Öder。当我运行查询以使用搜索字符串时关键字'Öder',只检索Öder作为搜索结果,并且不检索以ö即'örder'开头的值。如果我在MySQL服务器的my.cnf文件中将字符集服务器更改为latin1并整理到latin1_general_ci(相同的字符集和校对更改为latin1我也为相应的数据库和表做了),它工作正常,即两个值都作为搜索结果检索。但是有一种方法可以使用utf8作为对德语变音符号进行不区分大小写的搜索character-set-server?面对这个问题的其他单词以及包含ü,Ü,ä,Ä等德语元音的开头。
答案 0 :(得分:0)
使用mysql命令行工具测试:
mysql> SELECT 'Ö' = 'ö' COLLATE utf8_general_ci;
+-------------------------------------+
| 'Ö' = 'ö' COLLATE utf8_general_ci |
+-------------------------------------+
| 1 |
+-------------------------------------+
1
表示true
; 0
表示false
。
任何utf8_..._ci
排序规则都会将一堆带重音/未重音的大写/小写字符视为相等。例如,utf8mb4_german2_ci表示它们相等:O=o=º=Ò=Ó=Ô=Õ=ò=ó=ô=õ
并在oe=Ö=ö=Œ=œ
之前排序。
Here是大多数字母代表大多数utf8排序规则的缩略图。
对于大多数用法,_general_ci不如_unicode_ci,它不如_unicode_520_ci,它将被MySQL 8.0中的Unicode 9.0标准取代。
我认为 german2 的目标是"电话簿"排序规则。但也许不是。在8.0中,utf8mb4_german2_ci
整理D=d=Ď=ď < Dž=dz=dž < Ð=ð
。但是utf8mb4_de_pb_0900_ai_ci
有D=d=Ð=ð=Ď=ď < Dž=dz=dž
。更多详情here。