MySQL不会在emojis上正确地使用GROUP BY

时间:2015-12-12 21:23:18

标签: mysql unicode emoji

我将单个表情符号存储在MySQL数据库的CHAR列中。列的编码为utf8mb4

当我运行此聚合查询时,MySQL不会按表情符号字符进行分组。它改为返回一行,只有一个表情符号和数据库中所有行的计数。

SELECT emoji, count(emoji) FROM emoji_counts GROUP BY emoji

这是我的表定义:

CREATE TABLE `emoji_counts` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `emoji` char(1) DEFAULT '',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

我是否需要考虑一些特殊的Unicode行为?

1 个答案:

答案 0 :(得分:3)

结果我需要在查询中指定扩展的排序规则,即utf8mb4_bin

这有效:

<?php
$string = "&foo=bar&foo2=bar2";
parse_str($string, $output);
print_r($output);

编辑:某些服务器配置(包括ClearDB&#39; s)上没有可用的排序规则...... {{1}}似乎也可以使用。