【问题标题】:Mysql utf8mb4 equalitymysql utf8mb4 相等
【发布时间】:2016-12-17 17:24:53
【问题描述】:

我将带有表情符号的文本存储在 mysql 数据库中。

数据库、表和列设置为使用utf8mb4utf8mb4_unicode_ci

我可以毫无问题地输入单元格值(数据类型为VARCHAR)。

但是,当我尝试查询数据库并区分表情符号类型时,mysql 无法区分。

例如,如果我在数据库中查询emoji_column = 'hello????' 所在的行,那么它将返回所有带有'hello' 和any 表情符号的行(例如:'hello??? ?'、'hello????'等)。

这是正常行为吗?如果我想要一个准确的查询,我是否必须比较十六进制值?还是设置不正确?

(表情符号存储正确,即如果我通过其他参数查询数据库,则返回正确的表情符号)。

谢谢。

【问题讨论】:

    标签: mysql character-encoding utf8mb4


    【解决方案1】:

    我认为你需要COLLATION utf8mb4_unicode_520_ci 来区分 Emoji。

    【讨论】:

    • 更改排序规则似乎没有帮助。我在这里找到了有关此问题的报告:bugs.mysql.com/bug.php?id=76553,它建议了与您所做的相同的修复。
    • 嗯...你运行的是什么版本?请告诉我们SHOW CREATE TABLE。来看看SELECT HEX(emoji_column) FROM tbl WHERE emoji_column = = 'hello?';
    • 我在执行查询时不使用HEX 函数。我必须这样做吗?
    • 这是一个不同的查询——用于调试。
    猜你喜欢
    • 2017-03-27
    • 2018-01-27
    • 2015-04-16
    • 1970-01-01
    • 2017-11-19
    • 2014-02-26
    • 2021-01-10
    • 1970-01-01
    相关资源
    最近更新 更多