【问题标题】:SQL Count by String incorrectlySQL 按字符串计数不正确
【发布时间】:2011-10-05 19:33:00
【问题描述】:

好的,我查了一下,似乎没有人问过这个问题。

所以我有两个字:

thiep cuoi
thiệp cưới

问题是当我 COUNT() 时,这些 mysql 会将这两者结合为相同的。比如这个sql:

#lets assume these two words have an id of 1 and 2 and that the column name
#in the table is `word`

SELECT `word`, COUNT(`word`)
FROM table_name 
WHERE `id` IN(1,2)
GROUP BY `word`;

将两个单词作为一行返回,计数为 2。这些不是通过 UTF-8 的相同单词,如何在 MySQL 中绕过这种行为? MySQL 不是按 UTF-8 分组而不转换为 ASCII 吗? :/

【问题讨论】:

    标签: mysql string utf-8 count ascii


    【解决方案1】:

    MySQL 使用您在列上设置的排序规则来确定单词中字母的相等性。在您在此列上设置的任何排序规则中,出于比较的目的,这些字母被认为是相等的。 MySQL 不会进行任何类型的转换或丢弃任何数据。

    http://dev.mysql.com/doc/refman/5.5/en/charset-general.html

    您可能正在使用一些常见的东西,例如 latin1_general_ci 或 utf8_general_ci。如果您希望将这些字母视为不同,那么您可能需要二进制排序规则。运行SHOW COLLATION LIKE 'utf8%' 之类的查询以查看服务器上可用的内容。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-19
    • 2017-08-28
    • 1970-01-01
    • 2018-04-03
    • 1970-01-01
    • 1970-01-01
    • 2021-10-06
    • 1970-01-01
    相关资源
    最近更新 更多