select count(answer1) as total, questionsResults.answer1
from questionsResults
WHERE correct=1 GROUP by answer1
我的问题是这组小写和大写,甚至删除重音!
Bonjour pépé
bonjour pépé
Bonjour pepe
将全部组合在一起:它将给我 1 行,而我需要 3 行:我需要区分小写、大写甚至重音!
有什么线索吗?
select count(answer1) as total, questionsResults.answer1
from questionsResults
WHERE correct=1 GROUP by answer1
我的问题是这组小写和大写,甚至删除重音!
Bonjour pépé
bonjour pépé
Bonjour pepe
将全部组合在一起:它将给我 1 行,而我需要 3 行:我需要区分小写、大写甚至重音!
有什么线索吗?
从手册
使用 COLLATE 子句,您可以覆盖任何默认排序规则进行比较。COLLATE 可用于 SQL 语句的各个部分。
此行为取决于使用的搭配。
你需要的搭配是utf_bin。
您可以使用 COLLATE 在查询中直接指定它
select count(answer1) as total, questionsResults.answer1
from questionsResults
WHERE correct=1 GROUP by answer1 COLLATE 'utf8_bin'
文档可以在这里找到:
http://dev.mysql.com/doc/refman/5.0/en/charset-collate.html
当然你也可以在你的数据库中修改搭配。
反过来,可以按如下方式进行分组(这是我的原始答案,我误解了这个问题。但为了完整起见,我会留下它)
您可以在查询中使用字符串函数。
就像是:
GROUP by replace(lower(answer1),'é',e)
如果这是法语,那么不可能有那么多口音,所以这是一个解决方案。
也可以将函数导入mysql,比如这个:https ://github.com/falcacibar/mysql-routines-collection/blob/master/tr.func.sql (mysql UDF实现strtr C函数)
或者您可以在插入数据之前对其进行规范化。