mysql针对中文和数字字段进行排序
场景1
field函数的使用
field(str,str1,str2,str3,str4…)
字段str按照字符串1、字符串2、字符串3、字符串4的顺序返回查询到的结果集。如果表字段值str不存在,放在结果集的最前面
subString
如七年级1班,想要截取第一个字符,就是substring(user_name,1,1),第一个参数写字段,第二个参数写从哪开始起始是1,第三个参数写需要截取的字符个数
完整sql
select user_name as class
from mall_user
order by field(SUBSTRING(user_name,1,1),'七','八','九');
场景2
字段中有数字和汉字,这里要求先排序数字但是要有序,然后再排序汉字,汉字按照首拼音那种方式使其有序
表结构如下
convert函数
mysql一般无法处理汉字排序问题,碰见诸如此类,使用convert函数将查询到的字段转为gbk即可排序
以下均为固定写法,用其作为排序条件则汉字就可按首拼音排序
convert(‘字段名’ using gbk);
convert的第二种用法,可以将字符串转为数值型
convert (字段名, type);
type有三种,decimal浮点数,signed整数,unsigned无符号整数
判断字段值是数字or汉字的一种方式
添加限定条件:(字段名+0)>0 汉字为0 数字为1
一般是直接添加一列作为一个tag用来标记,更好的使用
完整sql
select user_name,(user_name+0)>0 as flag
from mall_user
order by flag desc,(user_name+0),CONVERT(user_name using gbk);
SELECT file_name, is_dir,( file_name + 0 )> 0 AS flag,( file_name + 0 ) AS num,
CONVERT ( file_name USING gbk ) AS gbk
FROM
platform_resources
ORDER BY
is_dir DESC,
flag DESC,
num,
gbk;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示