我正在使用下面的寻址方法来处理我的仓库垃圾箱。
1-3-5
2-4-1
12-1-2现在我想使用Order by对它们进行排序,但问题是12-1-2在2-4-1之前
虽然我需要像下面这样进行排序
1-3-5
2-4-1
12-1-2
19-3-5
23-3-2事实上,每个地址包含3个不同的信息:
Shelve-floor-bin所以我需要先按架子排序,然后按地板排序,再按垃圾箱排序。
发布于 2017-08-31 18:53:36
也许这能行得通。
SELECT * FROM `tablename` ORDER By convert(`fieldtosory`, decimal) ASC 发布于 2017-08-31 18:55:19
SELECT '2-1' x UNION SELECT '12-1' ORDER BY x;
+------+
| x |
+------+
| 12-1 |
| 2-1 |
+------+
SELECT '2-1' x UNION SELECT '12-1' ORDER BY x+0;
+------+
| x |
+------+
| 2-1 |
| 12-1 |
+------+发布于 2017-08-31 19:28:23
您忽略了first rule of relational database design。解决方案是将标识符拆分到表中的三个属性中。其他任何事情都是一种变通办法。
假设这是不可能的,那么比已经建议的更好的解决办法是按照我所描述的那样更改表,但是重命名,并使用原始表名称创建具有三个属性的串联的视图。但这会破坏试图写入view属性的简单代码。
https://stackoverflow.com/questions/45979432
复制相似问题