如何基于字符串列按降序对数据进行排序?

时间:2019-02-07 06:53:59

标签: mysql sql

我正在尝试从数据库中按降序获取数据列表。但这并没有给出我想要的结果。

  • 表名: testing
  • 列名: id(pk), fiscal_no

我的查询是 SELECT * FROM `testing` ORDER BY fiscal_no DESC

对于此查询,我得到的结果

enter image description here

但是我希望基于fiscal_no最后一个数字

enter image description here

有没有针对这种结果的查询?

6 个答案:

答案 0 :(得分:3)

SYN#JOB# F EB实际上按降序位于SYN#JOB# J AN之前。

您应该考虑使用SUBSTRING函数(有时甚至是SUBSTR),以从budget_no列的第13个字符开始排序。

如果使用MySQL,则为ref。排序语句应为:

ORDER BY SUBSTRING(fiscal_no, 13) DESC

答案 1 :(得分:2)

您可以尝试:

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

SUBSTRING函数语法:

SUBSTRING(string, start, length)

但是我建议您最好重新设计表架构,因为表设计与1NF不匹配

答案 2 :(得分:1)

尝试一下

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

答案 3 :(得分:0)

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

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

答案 4 :(得分:0)

检查reversecast是否可以执行此操作

ORDER BY REVERSE(fiscal_no) DESC

OR 

ORDER BY CAST(fiscal_no AS UNSIGNED) DESC

答案 5 :(得分:0)

我会使用substring_index()

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

如果您知道它始终是最后三个字符,则可以使用right()

order by right(fiscal_no, 3) desc,
         fiscal_no desc