mysql——中文数字排序的实现(FIELD)

本文介绍如何使用MySQL的FIELD函数结合SUBSTRING进行自定义排序,解决第三方数据未按预期顺序排列的问题,实现网格信息的升序输出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天遇到一个需求,要求排序输出网格信息,但是数据是第三方对接插入的,并没有给我们排好顺序。所以只能自己动手了。

下图是原数据:
原数据
我们需要将其升序输出。
使用mysql中的函数FIELD。
语法如下:

  SELECT identifier FROM 表名 ORDER BY FIELD(SUBSTRING(identifier,3,1),'一','二','三','四','五','六','七','八','九');

1)ORDER BY 不用多说,排序
2)SUBSTRING的作用是截取到我们想要排序的依据,这个跟java中substring是差不多的,不多说。
3)‘一’,这个就是我们自定义的排序规则了,我们也可以定义从大到小,甚至不是顺序的,简单来说就是我们定义的才是排序规则!

输出效果:
输出效果
好了,就这么简单,下一期来一波order by 的详解~

谢谢观看,转载需注明出处哦~

### 实现 MySQL 中 Windows 文件名的中文排序 为了实现MySQL 数据库中按照类似于 Windows 的文件命名规则来处理包含中文字符的数据排序,可以采取以下几种方法: #### 方法一:转换为阿拉伯数字排序 对于像“一、二、三…”这样的连续编号形式,在存储到数据库之前先将其映射成对应的阿拉伯数字表示法。这可以通过编写应用程序逻辑完成预处理工作;也可以利用 MySQL 用户定义函数(UDF)实现自动化的数值化操作。 ```sql SELECT id, filename, CASE WHEN filename LIKE '一%' THEN 1 WHEN filename LIKE '二%' THEN 2 ... END AS num_order FROM table_name ORDER BY IFNULL(num_order,0),filename; ``` 此 SQL 片段展示了如何基于文件名中的特定模式匹配并赋予相应的整数权重用于辅助排序[^3]。 #### 方法二:使用自然语言解析插件或外部工具 借助第三方组件如 `lib_mysqludf_preg` 正则表达式 UDF 库或其他能够识别和解释复杂字符串结构的功能模块,可以帮助更灵活地分析路径组成部分,并据此调整最终呈现次序。 #### 方法三:自定义字段保存标准化后的名称 考虑到长期维护性和性能优化需求,可以在设计表结构时增加额外列专门用来记录经过规范化处理过的版本——即将原始文本依据既定标准转化为便于计算机理解的形式(比如全部转为拼音首字母加英文描述)。这样不仅简化了后续检索流程,而且提高了查询效率。 ```sql ALTER TABLE files ADD COLUMN normalized_name VARCHAR(255); UPDATE files SET normalized_name = some_normalization_function(filename); -- 假设存在这样一个功能 SELECT * FROM files ORDER BY FIELD(normalized_name,'folder','file'),normalized_name; ``` 上述代码片段说明了通过新增一个名为 `normalized_name` 的字段来进行更为精确有序的结果展示方式[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值