首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >mysql8的collate问题和修改

mysql8的collate问题和修改

原创
作者头像
用户3672714
发布2025-08-09 15:20:07
发布2025-08-09 15:20:07
7530
举报

1. 什么是 COLLATE?

  • COLLATE 是 MySQL 中的字符排序规则(collation),决定字符串比较、排序时的规则。
  • 例如,utf8mb4_general_ci 是一种排序规则,ci 表示不区分大小写(case-insensitive)。

2. MySQL 8 默认的字符集和排序规则

  • 默认字符集通常是 utf8mb4
  • 默认排序规则是 utf8mb4_0900_ai_ci(基于 Unicode 9.0,支持更全面的字符比较)

3. 查看当前数据库和表的字符集与排序规则

代码语言:javascript
复制
-- 查看数据库默认字符集和排序规则SHOW CREATE DATABASE your_database;-- 查看表的字符集和排序规则SHOW TABLE STATUS WHERE Name='your_table';-- 查看字段的字符集和排序规则SHOW FULL COLUMNS FROM your_table;php167 Bytes© 菜鸟-创作你的创作

4. 常见 COLLATE 相关问题

  • 排序结果和旧版本不一致 MySQL 8 用了新的排序规则 utf8mb4_0900_ai_ci,可能导致排序结果与 MySQL 5.7 utf8mb4_general_ci不同。
  • 字符比较敏感 某些查询因为排序规则不同,WHERE 比较结果不一样。
  • 跨字符集/排序规则比较导致报错 不同字段或变量 COLLATE 不一致,比较时会报错。

5. 修改数据库、表、字段的 COLLATE

(1)修改数据库的字符集和排序规则

代码语言:javascript
复制
ALTER DATABASE your_databaseCHARACTER SET utf8mb4COLLATE utf8mb4_general_ci;php78 Bytes© 菜鸟-创作你的创作

(2)修改表的字符集和排序规则

代码语言:javascript
复制
ALTER TABLE your_tableCONVERT TO CHARACTER SET utf8mb4COLLATE utf8mb4_general_ci;php83 Bytes© 菜鸟-创作你的创作

注意CONVERT TO 会修改所有字符字段的字符集和排序规则。

(3)修改字段的排序规则

代码语言:javascript
复制
ALTER TABLE your_tableMODIFY column_name VARCHAR(255)CHARACTER SET utf8mb4COLLATE utf8mb4_general_ci;php104 Bytes© 菜鸟-创作你的创作

6. 查询时临时指定排序规则

代码语言:javascript
复制
SELECT * FROM your_tableWHERE column_name COLLATE utf8mb4_general_ci = 'abc';php78 Bytes© 菜鸟-创作你的创作

或者排序时:

代码语言:javascript
复制
SELECT * FROM your_tableORDER BY column_name COLLATE utf8mb4_general_ci;php73 Bytes© 菜鸟-创作你的创作

7. 推荐做法

  • 统一数据库、表、字段字符集和排序规则,避免跨字符集比较错误。
  • 如果想兼容 MySQL 5.7 旧排序行为,可以把 COLLATE 设置为 utf8mb4_general_ci 或者 utf8mb4_unicode_ci
  • MySQL 8 默认 utf8mb4_0900_ai_ci 排序更严格且支持更多 Unicode 字符,建议新项目使用它。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 什么是 COLLATE?
  • 2. MySQL 8 默认的字符集和排序规则
  • 3. 查看当前数据库和表的字符集与排序规则
  • 4. 常见 COLLATE 相关问题
  • 5. 修改数据库、表、字段的 COLLATE
    • (1)修改数据库的字符集和排序规则
    • (2)修改表的字符集和排序规则
    • (3)修改字段的排序规则
  • 6. 查询时临时指定排序规则
  • 7. 推荐做法
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档