Php 如何使用order by子句正确获取01/2020形状数据的记录

Php 如何使用order by子句正确获取01/2020形状数据的记录,php,mysql,codeigniter,Php,Mysql,Codeigniter,您好,我有一些文件的记录,编号为01/2020、02/2020等等,我使用order by子句按这些编号对记录进行排序,但它从01/2020正确返回到10/2020,然后显示100/2020有解决方案吗?请与我分享。如果我的假设是正确的,即此记录的格式是正在运行的\u no/year,则您需要按顺序提取要包含的年份。考虑下面的例子。 如果数据如下所示: +----------+ | Value | +----------+ | 01/2020 | | 02/2020 | | 10/20

您好,我有一些文件的记录,编号为01/2020、02/2020等等,我使用order by子句按这些编号对记录进行排序,但它从01/2020正确返回到10/2020,然后显示100/2020有解决方案吗?请与我分享。

如果我的假设是正确的,即此记录的格式是
正在运行的\u no/year
,则您需要按顺序提取要包含的年份。考虑下面的例子。

如果数据如下所示:

+----------+
|   Value  |
+----------+
| 01/2020  |
| 02/2020  |
| 10/2020  |
| 100/2020 |
| 01/2021  |
| 10/2021  |
+----------+
后面的4位数字表示运行年份,那么您可以通过几种方式从if中提取年份。这里我使用
RIGHT()
SUBSTRING\u INDEX()
展示了两个示例


有更多的方法可以实现这一点,只要你能确定它将以你想要的方式返回结果。

我的问题已经通过使用
ORDER by ABS(MyField)

你可以使用字段类型varchar。字段类型为varchar。。尝试使用
ORDER by ABS(YourField)
有解决方案吗?我假设会有类似
01/2021、02/2021。。。未来的100/2022
等?所以这实际上是在运行_no/year,对吗?如果是这样,
ABS()。
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;