当前位置: 首页 > news >正文

MySQL 中文排序(拼音排序)不生效问题全解析

💡 MySQL 中文排序(拼音排序)不生效问题全解析

📍 问题背景

在 MySQL 中使用中文数据进行排序时,可能出现以下现象:

当前数据库字符集:utf8mb4_general_ci
排序结果:
呀项目2
啊项目3
项目1

按理说应该是:

啊项目3
呀项目2
项目1

为什么会出现这种问题?该如何解决?


🧩 一、问题原因

默认的排序规则 utf8mb4_general_ci 并不真正理解中文。
它的排序逻辑只是按 Unicode 编码点大小排序,而不是按拼音或笔画。

字符 Unicode 排序结果
5440 1️⃣
554A 2️⃣
9879 3️⃣

所以 MySQL 认为 “呀 < 啊 < 项”,导致排序看起来“不对”。


✅ 二、正确的解决方案(MySQL 8.0+)

MySQL 8.0 引入了中文拼音排序支持规则:

utf8mb4_zh_0900_as_cs

含义解释:

  • zh:中文(Chinese)
  • _0900_:Unicode 9.0 排序算法
  • as:accent-sensitive(区分声调)
  • cs:case-sensitive(区分大小写)

示例 SQL:

SELECT name 
FROM audit_keyData 
ORDER BY name COLLATE utf8mb4_zh_0900_as_cs;

结果为正确的拼音顺序:

啊项目3
呀项目2
项目1

⚙️ 三、在 Midway / TypeORM 中的实践

在 Midway 项目中,通常使用 TypeORM 查询。
如果直接写:

http://www.dtcms.com/a/512311.html

相关文章:

  • 建站网络公司云南网站备案难吗
  • 深度学习(8)- PyTorch 数据处理与加载
  • JAVA:Spring Boot 集成 Jackson 实现高效 JSON 处理
  • 深度学习之YOLO系列YOLOv4
  • 江西移动网站建站推广外包
  • 张家口网站建设zjktao温州公司网址公司
  • Cef笔记:Cef消息循环的集成
  • 第十六篇:Lambda表达式:匿名函数对象的艺术
  • 织梦cms通用蓝白简介大气企业网站环保科技公司源码汕头网站制作全过程
  • xss-labs pass-06
  • 解决selenium提示chrome版本过低问题
  • 重庆做网站电话深圳做装修网站费用多少
  • 做网站的免费空间商品房交易网
  • 鸡蛋质量识别数据集,可识别染血的鸡蛋,棕色鸡蛋,钙沉积鸡蛋,污垢染色的鸡蛋,白鸡蛋,平均正确识别率可达89%,支持yolo, json, xml格式的标注
  • YOLOv4简单基础学习
  • 网站的域名每年都要续费南通网络科技有限公司
  • LLAMA-Factory Qwen3-1.7b模型微调
  • PageHelper 分页框架查询总数 SQL 错误解决方案:从源码逻辑到版本影响(含实验验证)
  • NExF——建立3D空间上的曝光场辅助重建
  • 网站建设公司 合肥影视后期制作培训机构全国排名
  • 审计 jenkins获取构建历史,生成excel
  • 【能源与流程工业案例】KBC借助TeeChart 打造工业级数据可视化平台
  • 网站站点的建立wordpress 清单 主题
  • 苏州市建设交易中心网站wordpress 插件 重置密码
  • Linux 网络协议栈数据流跟踪-静态路由demo
  • 【C++】STL容器--list的模拟实现
  • 再次使用xca软件生成自签证书的补充说明
  • 第2章 数据库系统的核心--数据模型
  • 计算机组成基础
  • 迅投xtquant获取股票对应的申万行业