首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >用于排序的Varchar到数字的转换

用于排序的Varchar到数字的转换
EN

Stack Overflow用户
提问于 2009-12-09 02:34:49
回答 4查看 40K关注 0票数 34

我有一个按column排序的查询

代码语言:javascript
复制
select * from mytable order by column asc — sort table

column类型为varchar,因此输出为:

代码语言:javascript
复制
1
10
100
11
12
13

如果我希望它们按数值排序,那么我应该如何排序,这样输出就是:

代码语言:javascript
复制
1
10
11
12
13
100
EN

回答 4

Stack Overflow用户

发布于 2009-12-09 02:37:20

使用:

代码语言:javascript
复制
order by cast(column as unsigned) asc
票数 54
EN

Stack Overflow用户

发布于 2011-12-28 18:25:52

如果您只想将column视为INT,则可以使用此选项:

代码语言:javascript
复制
SELECT * FROM mytable ORDER BY column+0;
1
10
11
12
13
100

或者,如果您想同时将column视为INTVARCHAR,则执行此操作

代码语言:javascript
复制
SELECT * FROM mytable ORDER BY column+0, column; #this will sort the column by VARCHAR first and then sort it by INT

abc
xyz
1
10
11
12
13
100
票数 28
EN

Stack Overflow用户

发布于 2015-04-20 19:02:51

如果我们只是稍微修改order by声明(在order by字段中添加“+0”),就可以强制MySQL对字段进行自然排序。

代码语言:javascript
复制
 > select * from mytable order by column+0 asc;
 column
 1 
 10
 11
 12
 13 
 100
票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1868965

复制
相关文章

相似问题

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