我正在尝试从数据库中按降序获取数据列表。但这并没有给出我想要的结果。
testing
id(pk), fiscal_no
我的查询是:
SELECT * FROM `testing` ORDER BY fiscal_no DESC
对于此查询,我得到的结果
但是我希望基于fiscal_no
最后一个数字
有没有针对这种结果的查询?
答案 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)
检查reverse
或cast
是否可以执行此操作
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