时间:2014-03-12 13:43:06

标签: mysql unicode collation

现在我使用瑞典地理数据 在瑞典有两个不同的地方:Habo和Håbo

如果运行SELECT * FROM g2_se_raw_zip WHERE province EQUALS 'Håbo'SELECT * FROM g2_se_raw_zip WHERE province='Håbo'等查询,它也会给我Habo

我对GROUP BY和其他查询存在同样的问题

为什么它会像这样工作以及如何修复它?

其他信息: character_set_client utf8, character_set_connection utf8, character_set_database utf8, character_set_filesystem binary, character_set_results utf8, character_set_server utf8, character_set_system utf8,

1 个答案:

答案 0 :(得分:0)

这是整理问题。瑞典语词典将O-ring和o视为字母表中不同的字母,而国际校对则将它们视为同一字母的不同变体。

这些查询可以帮到你。

SELECT * 
  FROM g2_se_raw_zip 
 WHERE province COLLATE utf8_swedish_ci EQUALS 'Håbo'


SELECT * 
  FROM g2_se_raw_zip 
 WHERE province COLLATE utf8_swedish_ci = 'Håbo'

为了提高索引性能,您可能希望将包含瑞典语地名的数据库中列的排序规则设置更改为瑞典语排序规则。但是,如果您正在开发泛欧应用程序,您可能更愿意让用户在用户配置文件中告诉您自己的国家语言,这样您就可以按照他们的期望进行搜索。