排序功能在系统中很常见,主要是对数字类型的字段进行升降排序。但是针对那些字符串数字或者带字符的数字字符串,普通的Sort排序就会出现各种各样的问题。比如对字符串数字进行降序排序,会出现:9,8,7,6,5,4,3,2,1,10,11这种异常情况。如何处理?请往下看。

单词语法

Grammar

Sort

英 [sɔːt]   美 [sɔːrt]

n. 种类;类别;品种;某一种(或某一类)人;分类;排序

v. 整理;把…分类;妥善处理;安排妥当

复数 sorts
第三人称单数 sorts
现在分词 sorting
过去式 sorted
过去分词 sorted

经典例句

We sort out the rubbish.
我们把垃圾进行分类。

编程语法

Java

需求:数据库有一张cabinet表,其中字段code的生成规则是字母加上自增的编号(CK2_9,CK2_10之类);目前要求通过code字段进行降序排序。


思路:如果直接用Spring的Sort.by方法或者是MySQL的order by 函数。都会出现下面这种情况。如何处理?我目前有三种解决方法,欢迎补充!!!

code
CK2_9
CK2_8
CK2_7
CK2_12
CK2_11
CK2_10

第一种方法:直接利用MySQL自带的函数substring_index 对code字段进行字符串分隔。获取需要的数字部分,再通过+0的操作,将数字字符串转成纯数字。若数据量太大,则不推荐。

select * from cabinet order by (substring_index(code, '_', -1)+0) desc

第二种方法:万金油方法,通过添加辅助字段解决排序问题。实在没有解决方案再用。

第三种方法:规范code数字部分的长度,补齐数字部分的长度,不足用0填充。比如将CK2_9和CK2_10 格式化成 CK2_009 和 CK2_010。然后就可以使用普通的排序方法。该方法需要提前预算数据量的大小,提前设置数字位的长度。

select code from cabinet order by code desc 
String.format("%04d", 1)

以下是正常输出结果

code
CK2_12
CK2_11
CK2_10
CK2_09
CK2_08
CK2_07

往期精彩

previous

英语| 123期 Schedule时刻表

英语| 122期 Space空格

英语| 121期 Memory内存

英语| 120期 Variable变量

英语| 119期 Parameter参数

英语| 118期 Index 索引

英语| 117期 Divide 分开

mysql 中文含数字排序_英语| 124期 Sort 坑爹的字符串排序相关推荐

  1. C++的sort函数实现字符串排序

    一.背景 sort函数用于C++中,对给定区间所有元素进行排序.头文件是#include <algorithm>. 实现原理:sort并不是简单的快速排序,它对普通的快速排序进行了优化,此 ...

  2. 使用qsort对不连续的内存数据排序_一点就懂的十大经典排序算法

    我是CSDN博主「雨夜※繁华」,这是我的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明. 原文链接:一点就懂的经典十大排序算法_大数据_LH is programmin ...

  3. 实现时间排序_面试官:手撕十大排序算法,你会几种?

    推荐阅读: 去面试大厂被 Kafka 虐了,后悔没有早点看到这份Kafka手写笔记 面试阿里,京东,百度,快手归来,三年Java开发总结了这些经验 阿里,字节,腾讯,面试题都涵盖了,这一份Java面试 ...

  4. jooq 分页排序_将jOOQ与Spring结合使用:排序和分页

    jooq 分页排序 JOOQ是一个库,可以帮助我们控制SQL. 它可以从我们的数据库生成代码,并允许我们使用其流畅的API来构建类型安全的数据库查询. 本教程前面的部分向我们介绍了如何配置应用程序的应 ...

  5. java 国家名称排序_对5个国家的名称进行排序详细解析

    注:代码通过TDM-GCC4.9.2编译通过 原题:有"China","America","Australia","France& ...

  6. java对列表数据排序_如何在Java中对列表进行排序

    java对列表数据排序 Sometimes we have to sort a list in Java before processing its elements. In this tutoria ...

  7. python对datetime排序_【python】时间戳、字典列表排序

    记录一下昨天学到的知识: 一.文件相关 文件追加:f = open("fname","a")    文件不存在时创建 二.时间戳相关 获取时间戳: import ...

  8. python升序和降序排序sort_【python】 sort、sorted高级排序技巧

    这篇文章主要介绍了Python中列表(List)的详解操作方法,包含创建.访问.更新.删除.其它操作等,需要的朋友可以参考下 Python list内置sort()方法用来排序,也可以用python内 ...

  9. mysql 不排序_第08期:有关 MySQL 字符集的注意事项

    本文关键字:字符集.建库建表一.数据库和字符集1. 建库时指定创建数据库时,显式指定字符集和排序规则,同时,当切换到当前数据库后,参数 character_set_database,collation ...

最新文章

  1. iOS crash日志分析
  2. Citrix XenServer XenCenter 警报
  3. 我们为什么要学Java?Java好在哪?
  4. html 根作用域,AngularJS入门教程之Scope(作用域)
  5. Androi App缓存管理
  6. 对java面向对象的三大特征的理解_Java面向对象的三大特征是什么?
  7. liunx常用命令笔记
  8. 王自如、罗永浩将一起出镜直播带货?罗永浩亲自回应
  9. 【SAP解决方案干货合集】满满的干货,是您了解华为云SAP解决方案的必备利器
  10. c语言冒泡例子,C语言排序实例(选择、冒泡、插入、折半、快速)
  11. android n sdk,Android SDK (phần 6) pptx
  12. [读书笔记]组件设计:补白[深入剖析ASP.NET组件设计]一书中HttpApplication对象创建的细节...
  13. GameFrameWork框架(Unity3D)使用笔记(八) 实现场景加载进度条
  14. 小姐姐让我帮忙修照片
  15. idea 如何将本地新建项目上传到gitlab
  16. 西门子S7-1200和人机界面测试
  17. 2023中国(上海)国际大豆食品加工及设备展览会
  18. 9月才刚过十天不到,这些IT大厂就停止秋招了
  19. 微信小程序开发之如何哪获取微信小程序的APP ID
  20. 多线程基础-守护线程与非守护线程

热门文章

  1. Qt 实现数据协议控制--组帧、组包、解析帧、解析包
  2. C#socket之TCP开发详解(一)
  3. php限制小程序访问,PHP投票小程序,防超时,防IP限制
  4. 15个学习习惯,受益一生(强烈推荐)
  5. supervisor使用指南
  6. ICCV 2017 《Towards End-to-End Text Spotting with Convolutional Recurrent Neural Network》论文笔记
  7. 中if判断中文_当Excel表格中的条件判断超过8个,用IF函数不容易实现怎么办?...
  8. linux删除软件包git的命令,linux系统安装git及git常用命令
  9. 2020-12-22 一些有用的开源软件
  10. window.location操作url对象