MySQL中utf8mb4排序规则示例

本文主要介绍了MySQL中utf8mb4排序规则,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

MySQLutf8mb4排序规则示例,久久派带你了解更多相关信息。

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

  • utf8mb4_0900_ai_ci
  • utf8mb4_unicode_ci
  • utf8mb4_general_ci

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

  • 在MySQL 5.7版本中,默认排序规则为utf8mb4_general_ci。
  • 在MySQL 8.0版本中,默认排序规则为utf8mb4_0900_ai_ci。

由于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用于设置服务器级别的默认排序规则。

  • 如果服务启动时未指定参数collation_database的值,则默认继承参数collation_server的值。
  • 如果创建数据库时未指定排序规则,则默认使用参数collation_database的值。

参数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在下列条件中生效:

  • 使用SHOW COLLATION and SHOW CHARACTER SET 命令时。
  • 在创建库或修改库指定utf8mb4但未指定编码规则时。
  • 在创建表或修改表指定utf8mb4但未指定编码规则时。
  • 在增加列或修改列指定utf8mb4但未指定编码规则时。
  • 其他使用utf8mb4但未指定编码规则时。

utf8mb4_unicode_ci和utf8mb4_general_ci对比

1、准确性

  • utf8mb4_unicode_ci排序规则基于标准unicode进行排序和比较,能处理特殊的字符,能在各种语音中精确排序。
  • utf8mb4_general_ci排序规则没有基于标准unicode,无法处理部分特殊字符。

2、性能

  • utf8mb4_general_ci排序规则在排序性能上相对较好
  • utf8mb4_unicode_ci排序规则为处理特殊字符实现复杂的排序算法,性能略差
  • 在大部分场景下,两者没有明显的性能差异

补: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)

测试总结

  • 使用utf8mb4字符集能存储特殊字符如表情符号。
  • utf8mb4_unicode_ci和utf8mb4_general_ci排序规则无法\”正确匹配\”特殊字符。
  • utf8mb4_0900_ai_ci排序规则能\”正确匹配\”特殊字符,但仅适用MySQL 8.0版本。
  • utf8mb4_bin排序规则基于二级制方式匹配特殊字符,能\”正确匹配\”特殊字符,适用于MySQL各个版本。

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至 55@qq.com 举报,一经查实,本站将立刻删除。转转请注明出处:https://www.szhjjp.com/n/8176.html

(0)
上一篇 2021-07-29 20:48:10
下一篇 2021-07-29 20:48:12

相关推荐

  • 广电总局:大力支持播出优秀动画片(实在太让人期待了)

    广电总局:大力支持播出优秀动画片实在太让人期待了!有家长在接受采访的时候也表示,孩子看了动画片后会模仿动画片中人物的动作。家长表示自家孩子会模仿奥特曼的打斗的动作,所以有家长就希望能够对动画片进行分级管理,对那些涉及暴力的动画片严加管理

    2021-09-25 热点头条
    3350
  • 散文朗诵经典作品(经典叙事散文朗诵经典作品)

    我们平时被种种情绪、思想和欲望所主宰,但是有些时候,我们依然能极其清晰地、极其深刻地感受到自己的心灵:可能是在欣赏一支美好的曲子,可能是在宁静清澈的大自然流连,可能是品尝着日常生活的点点滴滴。当我们看雪花翩然飘下,或看到太阳从山后缓缓升起,看到

    2022-01-14
    1560
  • 重庆渝中公安分局就“民警违法传唤”致歉:责令派出所撤回上诉

    原标题:重庆渝中公安分局就“民警违法传唤”致歉:责令派出所撤回上诉针对渝中区法院判决望龙门派出所民警口头传唤王某违法,派出所提起上诉一事,渝中区公安分局认为,处警民警对王某进行口头传唤的行为违反法定程序,对王某父母使用警械的行为不符合相关规

    2021-09-12 热点头条
    3240
  • 内存卡检测工具哪个好(内存卡真假测试软件)

    最近本人在天猫一家名叫南舵旗舰店买了一张128GB内存卡,收到的卡外观也与介绍图片一致。原本打算买来用在车子的行车记录仪上,收到后插上提示未格式化,问是否格式化,确认格式化后提示格式化失败,但用电脑系统的格式化功能可以成功格式化,显示容量为125GB

    2021-12-27 热点头条
    2170
  • 零成本零门槛赚钱项目(冷门的任务导航站赚钱)

    零成本零门槛赚钱项目,教你操作冷门的任务导航站赚钱,后期纯属被动收益!今天给小伙伴们分享一个冷门小众的赚钱玩法:通过任务导航站赚钱。赚钱原理是什么?用户通过你在任务平台获取的专属链接或者二维码,成为你的下线之后,只要做了任务或者提现等操

    2021-12-15
    1280
  • 魅族18x全面测评?魅族18x开箱上手体验

    大家在今天看完魅族18x发布会之后对魅族18x有点心动?那么先别急,小编今天给大家带来的是魅族18x全面测评内容,看完你再决定要不要入手魅族18x,话不多说,让我们直接开始!

    2021-09-22 热点头条
    1710

发表回复

登录后才能评论