首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对varchar进行数值排序,同时也按其他字段排序

对varchar进行数值排序,同时也按其他字段排序
EN

Stack Overflow用户
提问于 2017-05-09 00:02:41
回答 1查看 15关注 0票数 0

我需要按照可能包含数字的varchar对查询结果进行排序,但也需要预先按其他字段进行排序。

假设我的表看起来像这样:

代码语言:javascript
复制
+------------------------+-----------------+
| AnotherField           | VarCharWithNums |
+------------------------+-----------------|
| Same Data in Every Row | Numbers 5-10    |
| Same Data in Every Row | Numbers 10-13   |
| Same Data in Every Row | Numbers 13-15   |
+------------------------+-----------------|

此查询:

代码语言:javascript
复制
SELECT VarCharWithNums, AnotherField
FROM MyTable
ORDER BY CAST(VarCharWithNums AS UNSIGNED) ASC

给了我这个:

代码语言:javascript
复制
+------------------------+-----------------+
| AnotherField           | VarCharWithNums |
+------------------------+-----------------|
| Same Data in Every Row | Numbers 5-10    |
| Same Data in Every Row | Numbers 10-13   |
| Same Data in Every Row | Numbers 13-15   |
+------------------------+-----------------|

此查询:

代码语言:javascript
复制
SELECT VarCharWithNums, AnotherField
FROM MyTable
ORDER BY AnotherField ASC, CAST(VarCharWithNums AS UNSIGNED) ASC

给了我这个:

代码语言:javascript
复制
+------------------------+-----------------+
| AnotherField           | VarCharWithNums |
+------------------------+-----------------|
| Same Data in Every Row | Numbers 10-13   |
| Same Data in Every Row | Numbers 5-10    |
| Same Data in Every Row | Numbers 13-15   |
+------------------------+-----------------|

我在ORDER BY子句中为字段赋予了什么优先级并不重要,当我将VarCharWithNums与其他字段一起排序时,它永远不会正确排序。

EN

回答 1

Stack Overflow用户

发布于 2017-05-09 00:15:49

您在最后一段中提到了这一点,但是您所展示的内容中唯一的错误是,为了获得您所描述的排序,CAST(VarCharWithNums AS UNSIGNED) ASC必须是ORDER BY子句中的第一个内容。它应该可以工作,当我在我的机器上创建一个人为的例子时,它就可以工作了。

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

https://stackoverflow.com/questions/43852277

复制
相关文章

相似问题

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