Mysql按姓氏从小到大排序的正确sql

一、前言

最近有个需求,要按姓氏从小到大查询数据。(姓名都是中文的)

写了一个sql:

a 复制代码
select a.* from mytable a order by substr(a.NAME,1,1) asc

结果发现这样不行,排序是乱的。

二、解决办法

查询发现,如果mysql字符集是gbk的话,这样就可以;

如果是utf8,那就不行。

需要这样写:

a 复制代码
select a.* from mytable a order by convert(substr(a.NAME,1,1) using gbk) ASC

这样就能实现按姓氏从A-Z返回了。

相关推荐
知其然亦知其所以然2 小时前
MySQL 社招必考题:如何优化查询过程中的数据访问?
后端·mysql·面试
DemonAvenger3 小时前
NoSQL与MySQL混合架构设计:从入门到实战的最佳实践
数据库·mysql·性能优化
程序新视界4 小时前
如何在MySQL中创建聚集索引?
mysql
AAA修煤气灶刘哥15 小时前
后端人速藏!数据库PD建模避坑指南
数据库·后端·mysql
程序新视界16 小时前
学习MySQL绕不开的两个基础概念:聚集索引与非聚集索引
mysql
RestCloud19 小时前
跨境数据传输:ETL如何处理时区与日期格式差异
mysql·api
RestCloud19 小时前
揭秘 CDC 技术:让数据库同步快人一步
数据库·api
得物技术1 天前
MySQL单表为何别超2000万行?揭秘B+树与16KB页的生死博弈|得物技术
数据库·后端·mysql
xiaok1 天前
mysql中怎么创建一个可控权限数据库账号密码给到开发者
mysql