首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何对前缀中包含当前年份的数字进行排序

如何对前缀中包含当前年份的数字进行排序
EN

Stack Overflow用户
提问于 2021-08-12 13:33:32
回答 2查看 94关注 0票数 0

在我的项目中,我很难分清工作编号。我的客户要求以以下格式存储职务编号:

代码语言:javascript
复制
current year-1, current year-2, current year-3, and so on...

例如:-本年度为2021年,因此职务编号如下:

代码语言:javascript
复制
21-1, 21-2, 21-3, 21-4, and so on...

当一年发生变化时,它应该从明年的1开始,以此类推。例如:-

代码语言:javascript
复制
22-1, 22-2, 22-3, 22-4, and so on...

我已经成功地以上述格式存储了作业编号,但无法按照客户要求以正确的方式对作业编号进行排序。我用这样的方式对数据进行分类:-

代码语言:javascript
复制
21-1, 21-10, 21-100 to 21-109, 21-11 to 21-19, 21-2 and so on...

但实际情况应该是这样的:-

代码语言:javascript
复制
21-1, 21-2, 21-3, 21-4...21-10, 21-11 to 21-99, 21-100 to 21-199 and so on...

如果年份发生变化:-

代码语言:javascript
复制
22-1, 22-2, 22-3, 22-4...22-10, 22-11 to 22-99, 22-100 to 22-199 and so on...

我希望我已经简单地解释了我的问题。请帮我整理一下工作号码。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-08-12 14:44:08

我假设您需要在数据库中进行排序,因为您正在分页,或者只是不保存应用程序内存中的所有结果,请使用以下sql order by子句:

代码语言:javascript
复制
select    my_column
from      my_table
order by  left(my_column, 2),
          len(my_column),
          right(my_column, len(my_column) - 2)

解释:

  1. left(my_column, 2),对前两位数进行数字排序,以便将年份分组在一起。
  2. 基于震级的len(my_column)组记录序列(即,xx-100出现在xx-2之后,因为它更长)。
  3. right(my_column, len(my_column) - 2)数字排序记录序列。

提示:这假设你的年份代码总是两位数。我本可以找到破折号的指数,但这更像是假设。

如果需要应用程序端(PHP)解决方案,可以使用纳蒂。来自W3Schools:

定义和用法 函数通过使用“自然顺序”算法对数组进行排序。这些值保留原来的键。 在自然算法中,数字2小于数字10。在计算机排序中,10小于2,因为"10“中的第一个数小于2。 语法 纳特排序(数组)

票数 1
EN

Stack Overflow用户

发布于 2021-08-12 14:38:09

代码语言:javascript
复制
21-1, 21-10, 21-100, 1, 10, 100 

这些是数据库中的ids。首先,声明一个空数组和一个串行变量,然后循环遍历对象。使用两个新的keys array["date_serial"] ( array["serial"] )推送每个对象。然后接受新的数组,然后通过按“串行”键或ascdesc顺序排序数组来显示结果。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68758485

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档