MySQL 字符集与大小写敏感性解析

MySQL 字符集与大小写敏感性解析

💡 原文中文,约1800字,阅读约需5分钟。
📝

内容提要

在 MySQL 中,utf8 不支持部分 Emoji,而 utf8mb4 支持。默认的 utf8_general_ci 和 utf8mb4_general_ci 排序规则不区分大小写。要实现大小写敏感查询,可以修改排序规则或使用 BINARY 关键字。在 ThinkPHP 中,可通过 whereRaw 方法执行原生查询以确保大小写敏感匹配。

🎯

关键要点

  • MySQL 中的 utf8 不支持部分 Emoji,而 utf8mb4 支持。

  • utf8_general_ci 和 utf8mb4_general_ci 默认不区分大小写。

  • 要实现大小写敏感查询,可以修改排序规则或使用 BINARY 关键字。

  • utf8 是 MySQL 早期的 UTF-8 实现,最多支持 3 字节。

  • utf8mb4 是 MySQL 5.5+ 版本推荐的 UTF-8 编码,最多支持 4 字节。

  • 常见的排序规则包括 utf8_general_ci、utf8mb4_general_ci(不区分大小写)和 utf8_bin、utf8mb4_bin(区分大小写)。

  • 使用 LIKE 或 = 进行查询时,默认是不区分大小写。

  • 可以通过修改排序规则来实现区分大小写的查询。

  • 在 ThinkPHP 中,使用 whereRaw 方法可以执行原生查询以确保大小写敏感匹配。

延伸问答

MySQL 中 utf8 和 utf8mb4 有什么区别?

utf8 是 MySQL 早期的 UTF-8 实现,最多支持 3 字节,无法存储部分 Emoji;而 utf8mb4 是推荐的 UTF-8 编码,最多支持 4 字节,能够完整存储所有 Unicode 字符。

如何在 MySQL 中实现大小写敏感的查询?

可以通过修改排序规则或使用 BINARY 关键字来实现大小写敏感的查询。

在 ThinkPHP 中如何确保大小写敏感匹配?

在 ThinkPHP 中,可以使用 whereRaw 方法执行原生查询,以确保大小写敏感匹配。

MySQL 的默认排序规则是什么?

MySQL 的默认排序规则是 utf8_general_ci 和 utf8mb4_general_ci,这些规则在搜索时是不区分大小写的。

使用 LIKE 查询时,MySQL 默认是大小写敏感还是不敏感?

使用 LIKE 查询时,MySQL 默认是不区分大小写的。

如何修改 MySQL 表的排序规则以实现大小写敏感?

可以使用 ALTER TABLE 语句修改表的排序规则,例如:ALTER TABLE users MODIFY username VARCHAR(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;

➡️

继续阅读