嗨,我有一些文件的记录,编号为 01/2020、02/2020等,我已经使用逐个子句按这些数字顺序获取记录,但它从 01/2020 到 10/2020 正确返回,然后它向我显示 100/2020 有解决方案吗? 请与我分享。
如果我的假设是正确的,即此记录的格式running_no/year
那么您需要按顺序提取要包含的年份。请考虑以下示例。
如果数据如下所示:
+----------+
| Value |
+----------+
| 01/2020 |
| 02/2020 |
| 10/2020 |
| 100/2020 |
| 01/2021 |
| 10/2021 |
+----------+
后面的 4 位数字代表运行年份,然后您可以通过几种方式从 if 中提取年份。在这里,我展示了两个使用RIGHT()
和SUBSTRING_INDEX()
的示例。
example 1:
SELECT * FROM table ORDER BY RIGHT(Value,4) ASC, ABS(Value) ASC;
example 2:
SELECT * FROM table ORDER BY SUBSTRING_INDEX(Value,'/',-1) ASC, SUBSTRING_INDEX(Value,'/',1) ASC;
还有更多方法可以实现这一点,只要您可以确定它会以您想要的方式返回结果。
我的问题已通过使用ORDER BY ABS(MyField)
解决