首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mysql select order by的行为类似于字符串,而不是数字

Mysql select order by的行为类似于字符串,而不是数字
EN

Stack Overflow用户
提问于 2010-07-02 03:21:13
回答 2查看 10.3K关注 0票数 6

如果你的数字可以小于或大于0,你如何按数字排序?

Mysql表示例:

代码语言:javascript
复制
|Name|Karma|
 __________
|Me  | -8  |
|Bill|  5  |
|Tom |  2  |
|Saly|  0  |
|San.| -3  |

select查询示例

代码语言:javascript
复制
$sql="SELECT karma FROM table ORDER BY karma DESC";

我得到的结果是(用逗号分隔):5,2,0,-8,-3。它不应该是5,2,0,-3,-8吗?我在互联网上发现mysql是按字符串排序的。如何使其按编号排序?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-07-02 03:25:11

如果您已将Karma设置为字符串,即varchar列,则会将其作为字符串进行排序。

将该列转换为INT,它将按数字排序。

您还可以选择不更改表,但在排序时将列转换为正确的类型:

代码语言:javascript
复制
SELECT karma FROM table ORDER BY CAST(karma AS int) DESC

但这对性能是不利的。

票数 17
EN

Stack Overflow用户

发布于 2010-07-02 03:31:02

还有另一个最奇怪的选择:

代码语言:javascript
复制
SELECT karma FROM table ORDER BY karma+0 DESC
票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3160994

复制
相关文章

相似问题

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