首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何对varchar值进行排序MySQL

如何对varchar值进行排序MySQL
EN

Stack Overflow用户
提问于 2018-08-07 18:36:32
回答 2查看 63关注 0票数 0

我有一个id为(Varchar)的表

代码语言:javascript
复制
-----------------------------------------
ID        |NAME    |COLUMN1  |COLUMN2   |
-----------------------------------------
11.10     |abcd    |New col  | new col  |
11.10(a)  |abcd    |New col  | New Col 2|
11.50     |abcd    |New COl  | New coli | 
11.50(a1) |abcd    |New col  | New Col 2|
11.50(a2) |abcd    |New col  | New Col 2|
11.300(a) |abcd    |New col  | New Col 2|
11.200(a) |abcd    |New col  | New Col 2|
11.100(a) |abcd    |New col  | New Col 2|
11.40(a)  |abcd    |New col  | New Col 2|

现在,如果我使用以下命令获取排序后的数据:

代码语言:javascript
复制
Select * from table order by length(id) asc,id;

我得到的结果是

代码语言:javascript
复制
11.10
11.50
11.10(a)
11.100(a)
11.200(a)
11.300(a)
11.40(a)
11.50(a)
11.50(a1)

但我希望期望的输出如下所示

代码语言:javascript
复制
11.10
11.10(a)
11.40(a)
11.50
11.50(a)
11.50(a2)
11.200(a)
11.300(a)

对于相同的查询,合适的查询是什么?我已经使用CAST尝试过了,但是我得到了想要的输出。

EN

回答 2

Stack Overflow用户

发布于 2018-08-07 18:38:32

对于您的示例,您可以只使用length()

代码语言:javascript
复制
order by length(id), id

一种稍微更通用的方法使用substring_index()和隐式转换:

代码语言:javascript
复制
order by substring_index(id, '.', 1) + 0,
         substring_index(id, '.', -1) + 0,
         id
票数 1
EN

Stack Overflow用户

发布于 2018-08-07 19:23:11

Select Convert(Id,UNSIGNED INTEGER) AS num, col1, col2, col3 from Table Order By num这就像甲骨文的To_Number一样工作,所以我建议它会很有用

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

https://stackoverflow.com/questions/51724704

复制
相关文章

相似问题

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