• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    MySQL中utf8mb4排序规则示例

    在MySQL中常见的utf8mb4排序规则有:

    当设置表的默认字符集为utf8mb4字符集但未明确指定排序规则时:

    由于utf8mb4_0900_ai_ci排序规则时MySQL 8.0引入的排序规则,因此将MySQL 8.0版本的表导入到MySQL 5.7或MySQL 5.6版本时,会存在字符集无法识别的问题。

    [Err] 1273 - Unknown collation: 'utf8mb4_0900_ai_ci'

    参数控制

    在MySQL 5.6版本中,参数collation_server用于设置服务器级别的默认排序规则。

    参数character_set_database和collation_database在MySQL 5.7版本中被遗弃并将在后续版本中移除。
    MySQL新增参数default_collation_for_utf8mb4用于控制使用utf8mb4字符集时的默认排序规则,取值为utf8mb4_0900_ai_ci或utf8mb4_general_ci
    参数default_collation_for_utf8mb4在下列条件中生效:

    utf8mb4_unicode_ci和utf8mb4_general_ci对比

    1、准确性

    2、性能

    补:MySQL--utf8mb4与等值查询测试

    测试脚本

    ## 删除测试表
    DROP TABLE IF EXISTS tb2001;
    DROP TABLE IF EXISTS tb2002;
    DROP TABLE IF EXISTS tb2003;
    
    ## 创建测试表
    CREATE TABLE tb2001(
    id INT AUTO_INCREMENT PRIMARY KEY,
    c1 VARCHAR(100) COLLATE utf8mb4_unicode_ci,
    c2 VARCHAR(100) COLLATE utf8mb4_bin
    )ENGINE=INNODB DEFAULT CHARSET=utf8mb4 ;
    
    CREATE TABLE tb2002(
    id INT AUTO_INCREMENT PRIMARY KEY,
    c1 VARCHAR(100) COLLATE utf8mb4_general_ci,
    c2 VARCHAR(100) COLLATE utf8mb4_bin
    )ENGINE=INNODB DEFAULT CHARSET=utf8mb4;
    
    CREATE TABLE tb2003(
    id INT AUTO_INCREMENT PRIMARY KEY,
    c1 VARCHAR(100) COLLATE utf8mb4_0900_ai_ci,
    c2 VARCHAR(100) COLLATE utf8mb4_bin
    )ENGINE=INNODB DEFAULT CHARSET=utf8mb4;
    
    ## 插入测试数据
    INSERT INTO tb2001(c1,c2)VALUES(0xF09F8D83,0xF09F8D83),(0xF09FA68A,0xF09FA68A),(0xF09F8CA0,0xF09F8CA0);
    INSERT INTO tb2002(c1,c2)VALUES(0xF09F8D83,0xF09F8D83),(0xF09FA68A,0xF09FA68A),(0xF09F8CA0,0xF09F8CA0);
    INSERT INTO tb2003(c1,c2)VALUES(0xF09F8D83,0xF09F8D83),(0xF09FA68A,0xF09FA68A),(0xF09F8CA0,0xF09F8CA0);
    
    ## 等值查询测试
    SELECT * FROM tb2001 WHERE c1=0xF09F8D83;
    SELECT * FROM tb2002 WHERE c1=0xF09F8D83;
    SELECT * FROM tb2003 WHERE c1=0xF09F8D83;
    
    SELECT * FROM tb2001 WHERE c2=0xF09F8D83;
    SELECT * FROM tb2002 WHERE c2=0xF09F8D83;
    SELECT * FROM tb2003 WHERE c2=0xF09F8D83;
    

    测试结果

    mysql> SELECT * FROM tb2001 WHERE c1=0xF09F8D83;
    +----+------+------+
    | id | c1   | c2   |
    +----+------+------+
    |  1 | 🍃     | 🍃     |
    |  2 | 🦊     | 🦊     |
    |  3 | 🌠     | 🌠     |
    +----+------+------+
    3 rows in set (0.00 sec)
    
    mysql> SELECT * FROM tb2002 WHERE c1=0xF09F8D83;
    +----+------+------+
    | id | c1   | c2   |
    +----+------+------+
    |  1 | 🍃     | 🍃     |
    |  2 | 🦊     | 🦊     |
    |  3 | 🌠     | 🌠     |
    +----+------+------+
    3 rows in set (0.01 sec)
    
    mysql> SELECT * FROM tb2003 WHERE c1=0xF09F8D83;
    +----+------+------+
    | id | c1   | c2   |
    +----+------+------+
    |  1 | 🍃     | 🍃     |
    +----+------+------+
    1 row in set (0.00 sec)
    
    mysql> 
    mysql> SELECT * FROM tb2001 WHERE c2=0xF09F8D83;
    +----+------+------+
    | id | c1   | c2   |
    +----+------+------+
    |  1 | 🍃     | 🍃     |
    +----+------+------+
    1 row in set (0.00 sec)
    
    mysql> SELECT * FROM tb2002 WHERE c2=0xF09F8D83;
    +----+------+------+
    | id | c1   | c2   |
    +----+------+------+
    |  1 | 🍃     | 🍃     |
    +----+------+------+
    1 row in set (0.00 sec)
    
    mysql> SELECT * FROM tb2003 WHERE c2=0xF09F8D83;
    +----+------+------+
    | id | c1   | c2   |
    +----+------+------+
    |  1 | 🍃     | 🍃     |
    +----+------+------+
    1 row in set (0.00 sec)

    测试总结

    到此这篇关于MySQL中utf8mb4排序规则示例的文章就介绍到这了,更多相关MySQL utf8mb4排序内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    您可能感兴趣的文章:
    • 如何更改MySQL数据库的编码为utf8mb4
    • MySQL字符集utf8修改为utf8mb4的方法步骤
    • 详解JDBC对Mysql utf8mb4字符集的处理
    • Spring Data Jpa Mysql使用utf8mb4编码的示例代码
    • 设置mysql5.7编码集为utf8mb4的方法
    • 全面了解mysql中utf8和utf8mb4的区别
    上一篇:MySql子查询IN的执行和优化的实现
    下一篇:MySQL子查询中order by不生效问题的解决方法
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    MySQL中utf8mb4排序规则示例 MySQL,中,utf8mb4,排序,规则,