Mysql数据库按照varchar字符串类型排序和按照int整型类型排序的区别和注意点及解决方案
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Mysql数据库按照varchar字符串类型排序和按照int整型类型排序的区别和注意点及解决方案,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1570字,纯文字阅读大概需要3分钟。
内容图文
![Mysql数据库按照varchar字符串类型排序和按照int整型类型排序的区别和注意点及解决方案](/upload/InfoBanner/zyjiaocheng/469/f13b848248bb4ff8a2c922010588df02.jpg)
+-----------+
| server_id |
+-----------+
| 8 |
| 7 |
| 6 |
| 5 |
| 4 |
| 3 |
| 2 |
| 10 |
| 1 |
+-----------+
很明显,我想要的结果应该是 10,8,7,6,5 这样的。但是这个10排在了2的后面。按照字符串来排的。其实我是想把它当做数值来排。
手动转换类型:
用下面的方法就可以了,使server_id+0之后再排序,问题解决了。
select server_id from cardserver where game_id = 1 order by server_id+0 desc limit 10;
+-----------+
| server_id |
+-----------+
| 10 |
| 8 |
| 7 |
| 6 |
| 5 |
| 4 |
| 3 |
| 2 |
| 1 |
+-----------+
使用MySQL函数CAST/CONVERT:
mysql为我们提供了两个类型转换函数:CAST和CONVERT,现成的东西我们怎能放过?
CAST() 和CONVERT() 函数可用来获取一个类型的值,并产生另一个类型的值。
这个类型 可以是以下值其中的 一个:
BINARY[(N)]
CHAR[(N)]
DATE
DATETIME
DECIMAL
SIGNED [INTEGER]
TIME
UNSIGNED [INTEGER]
所以我们也可以用CAST解决问题:
select server_id from cardserver where game_id = 1 order by CAST(server_id as SIGNED) desc limit 10;
也可以使用CONVERT来搞定此问题:
select server_id from cardserver where game_id = 1 order by CONVERT(server_id,SIGNED) desc limit 10;
本文出自 “高山” 博客,转载请与作者联系!
Mysql数据库按照varchar字符串类型排序和按照int整型类型排序的区别和注意点及解决方案
标签:mysql按照varchar字符串类型排序出错
本文系统来源:http://gaoshan2016.blog.51cto.com/10804321/1846497
内容总结
以上是互联网集市为您收集整理的Mysql数据库按照varchar字符串类型排序和按照int整型类型排序的区别和注意点及解决方案全部内容,希望文章能够帮你解决Mysql数据库按照varchar字符串类型排序和按照int整型类型排序的区别和注意点及解决方案所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。