【发布时间】:2011-10-27 14:24:52
【问题描述】:
我在 MySQL 5.0.88 上使用 utf8 字符集和 utf8_unicode_ci 排序规则运行以下选择语句:
SELECT * FROM table WHERE surname = 'abcß';
+----+-------------------+------+
| id | forename | surname |
+----+-------------------+------+
| 1 | a | abcß |
| 2 | b | abcss |
+----+-------------+------------+
SELECT * FROM table WHERE surname LIKE 'abcß';
+----+-------------------+------+
| id | forename | surname |
+----+-------------------+------+
| 1 | a | abcß |
+----+-------------+------------+
根据http://dev.mysql.com/doc/refman/5.0/en/charset-unicode-sets.html utf8_unicode_ci 的德语特殊字符 ß = ss,但为什么它只适用于“=”运算符而不适用于 LIKE?我有一个电话簿应用程序,我迫切需要这两个东西一起工作。
【问题讨论】:
-
show variables like '%collation%'和show full fields from yourtable显示什么?排序规则必须始终相同。 -
表的所有 varchar 字段的排序规则都设置为“utf8_unicode_ci”+一些根本没有排序规则的 int 字段。
-
+1 个非常有趣的问题,喜欢听到答案。
-
collation_connection 是“utf8_unicode_ci”,collation_database 是“utf8_unicode_ci”,collation_server 是“latin1_swedish_ci”。但是,我认为服务器排序规则被数据库排序规则覆盖,否则我无法解释为什么它与“=”运算符一起使用
标签: mysql collation sql-like diacritics