Mysql 如何根据字符串列按描述顺序对数据进行排序?

Mysql 如何根据字符串列按描述顺序对数据进行排序?,mysql,sql,Mysql,Sql,我正在尝试从数据库中按desc顺序获取数据列表。但这并不是我想要的结果 表名:测试 列名:idpk,财政号 我的问题是: 从“测试”顺序中选择*按财务编号说明 对于这个查询,我得到了这个结果 但是我想要的结果应该是财政数字desc,就像这样,基于财政数字last num 有任何查询可用于此类结果吗?SYNJOBFEB实际上按降序排列在SYNJOBJAN之前 你应该考虑子函数或有时是子串来从FasCALK-无列的第十三个字符开始排序。< /P> 如果您使用MySQL,下面是示例。sort语句应为:

我正在尝试从数据库中按desc顺序获取数据列表。但这并不是我想要的结果

表名:测试 列名:idpk,财政号 我的问题是: 从“测试”顺序中选择*按财务编号说明

对于这个查询,我得到了这个结果

但是我想要的结果应该是财政数字desc,就像这样,基于财政数字last num

有任何查询可用于此类结果吗?

SYNJOBFEB实际上按降序排列在SYNJOBJAN之前

你应该考虑子函数或有时是子串来从FasCALK-无列的第十三个字符开始排序。< /P> 如果您使用MySQL,下面是示例。sort语句应为:

ORDER BY SUBSTRING(fiscal_no, 13) DESC
试试这个

SELECT * FROM testing ORDER BY substring(fiscal_no,13,3) DESC;

假设整数值是“财政”列中所有值的最后3个字符,则可以采取的一种解决方法是:

SELECT * FROM testing ORDER BY substring(fiscal_no,-3) DESC;
您可以尝试:

SELECT * FROM testing ORDER BY SUBSTRING(fiscal_no,13,3) DESC;
子字符串函数语法:

SUBSTRING(string, start, length)
但我建议您最好重新设计您的表架构,因为您的表设计与1NF不匹配。

检查reverse或cast是否可以在这方面起作用

ORDER BY REVERSE(fiscal_no) DESC

OR 

ORDER BY CAST(fiscal_no AS UNSIGNED) DESC
我将使用子字符串\u索引:

如果您知道它总是最后三个字符,那么您可以使用right:

order by substring_index(fiscal_no, '#', -1) desc,
         fiscal_no desc
order by right(fiscal_no, 3) desc,
         fiscal_no desc