Mysql 按自定义模式排序列
我正在尝试订购发票数据列。发票编码字段由以下内容组成:Mysql 按自定义模式排序列,mysql,sql,Mysql,Sql,我正在尝试订购发票数据列。发票编码字段由以下内容组成: 大写字母(如A-Z) 实际年份(如19) 反斜杠(/) 发票编号(如100) 真实示例:F19/1234 此时,我正在使用以下查询按发票编码订购 select * from `invoices` order by LENGTH(codification) desc, `codification` desc 这对2019年的发票有效,问题是2020年的发票编号重置为0,因此该订单失败 现在我有以下几点 F19/102 F19/101
select * from `invoices`
order by LENGTH(codification) desc, `codification` desc
这对2019年的发票有效,问题是2020年的发票编号重置为0,因此该订单失败
现在我有以下几点
- F19/102
- F19/101
- F19/100
- F20/1
- F20/0
select * from `invoices`
order by REGEXP_SUBSTR(`codification`, '[0-9]+(?=\/)') desc, REGEXP_SUBSTR(`codification`, '([a-z0-9_-]*[\/]?)$') desc
我想要完成的订单是(按年说明,发票编号)
- F20/1
- F20/0
- F19/102
- F19/101
- F19/100
order by codification desc
当2020年的发票号超过10时,您将遇到问题。要处理这个问题:
order by substring_index(codification, '/', 1),
substring_index(codification, '/', -1) + 0
为什么不试着直接按元素排序呢。例如,
按年份说明订购,发票号说明
可能还需要为大写字母添加元素