首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mysql Order By for字符串

Mysql Order By for字符串
EN

Stack Overflow用户
提问于 2017-08-31 18:38:59
回答 3查看 26关注 0票数 0

我正在使用下面的寻址方法来处理我的仓库垃圾箱。

代码语言:javascript
复制
1-3-5
2-4-1
12-1-2

现在我想使用Order by对它们进行排序,但问题是12-1-2在2-4-1之前

虽然我需要像下面这样进行排序

代码语言:javascript
复制
1-3-5
2-4-1
12-1-2
19-3-5
23-3-2

事实上,每个地址包含3个不同的信息:

代码语言:javascript
复制
Shelve-floor-bin

所以我需要先按架子排序,然后按地板排序,再按垃圾箱排序。

EN

回答 3

Stack Overflow用户

发布于 2017-08-31 18:53:36

也许这能行得通。

代码语言:javascript
复制
SELECT * FROM `tablename` ORDER By convert(`fieldtosory`, decimal) ASC 
票数 0
EN

Stack Overflow用户

发布于 2017-08-31 18:55:19

代码语言:javascript
复制
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 |
+------+
票数 0
EN

Stack Overflow用户

发布于 2017-08-31 19:28:23

您忽略了first rule of relational database design。解决方案是将标识符拆分到表中的三个属性中。其他任何事情都是一种变通办法。

假设这是不可能的,那么比已经建议的更好的解决办法是按照我所描述的那样更改表,但是重命名,并使用原始表名称创建具有三个属性的串联的视图。但这会破坏试图写入view属性的简单代码。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45979432

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档