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