我正在使用MySQL5.6。数据库字符集为 utf8mb4。当我搜索如下所示的表情符号时,我得到了意想不到的结果。
mysql> SELECT id, hex(title) FROM tags WHERE title = 0xF09F9886;
+-----+------------+
| id | hex(title) |
+-----+------------+
| 165 | F09F9886 |
| 166 | F09F9884 |
+-----+------------+
它应该只返回 id=165。有谁知道为什么?
我找到了解决方法。这是一个整理问题。我使用了默认排序规则值,我认为它是utf8mb4_general_ci
.当我更改该utf8mb4_bin时,MySQL返回了正确的结果。
您可以更改排序规则,如下所示。
ALTER TABLE tablename CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;