美文网首页
解决mysql where条件查询emoji表情出现数据重复问题

解决mysql where条件查询emoji表情出现数据重复问题

作者: 随风_d6a2 | 来源:发表于2022-07-31 23:49 被阅读0次

    1、背景
    查询emoji萝卜这个表情时,把其他的表情也关联查出来了

    image.png

    2、解决

    2.1、在where查询字段添加binary关键字,BINARY不是函数,是类型转换运算符,它用来强制它后面的字符串为一个二进制字符串,可以理解为在字符串比较的时候区分大小写   eg:select name from table where binary name = 😍
    2.2、把字段的COLLATE 改为utf8mb4_bin
    
    image.png

    3、COLLATE是用来做什么的?
    使用phpmyadmin的开发可能会非常眼熟,因为其中的中文表头已经给出了答案:


    image.png

    所谓utf8_unicode_ci,其实是用来排序的规则。对于mysql中那些字符类型的列,如VARCHAR,CHAR,TEXT类型的列,都需要有一个COLLATE类型来告知mysql如何对该列进行排序和比较。简而言之,COLLATE会影响到ORDER BY语句的顺序,会影响到WHERE条件中大于小于号筛选出来的结果,会影响DISTINCT、GROUP BY、HAVING语句的查询结果。另外,mysql建索引的时候,如果索引列是字符类型,也会影响索引创建,只不过这种影响我们感知不到。总之,凡是涉及到字符类型比较或排序的地方,都会和COLLATE有关。

    相关文章

      网友评论

          本文标题:解决mysql where条件查询emoji表情出现数据重复问题

          本文链接:https://www.haomeiwen.com/subject/vqsdwrtx.html