自己建表的时候,把一个字段类型创建为varchar(2) ,其实应该建为int(2)的。因为我只允许输出数字。这本来也没什么,无非就是占点空间,懒得改了。但是今天在后台发现排序有问题。于是,没办法,改 之。下面简单说一下MySQL的varchar排序问题,引以为戒。

下面,我从数据库里面以server_id排一下序,大家来看一下排序后的结果:

select server_id from cardserver where game_id = 1 order by server_id desc limit 10;

+-----------+
| 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;

转载于:https://blog.51cto.com/gaoshan2016/1846497

Mysql数据库按照varchar字符串类型排序和按照int整型类型排序的区别和注意点及解决方案...相关推荐

  1. mysql int 做排序_Mysql数据库按照varchar字符串类型排序和按照int整型类型排序的区别和注意点及解决方案...

    自己建表的时候,把一个字段类型创建为varchar(2) ,其实应该建为int(2)的.因为我只允许输出数字.这本来也没什么,无非就是占点空间,懒得改了.但是今天在后台发现排序有问题.于是,没办法,改 ...

  2. mysql 数据库中varchar的存储单位是什么

    一.先了解字节与字符 字节(Byte)是计量单位,表示数据量多少,是计算机信息技术用于计量存储容量的一种计量单位,通常情况下一字节等于八位. 字符(Character)计算机中使用的字母.数字.字和符 ...

  3. PHP标量类型中整型类型的,PHP数据类型概述

    在PHP中,有8种基本数据类型和一些伪类型,其中基本数据类型又分为标量类型.复合类型和特殊类型.相对C#,类型少了不少,但同样可实现很多功能,也不比其它语言差. 一.基本类型 1.标量类型(4种) 1 ...

  4. python数据类型怎么定义_零基础如何学好Python 之int 数字整型类型 定义int()范围大小转换...

    本文主题是讲python数字类型python int整型使用方法及技巧.它是不可变数据类型中的一种,它的一些性质和字符串是一样的,注意是整型不是整形哦. Python int有多种数字类型:整型int ...

  5. python的整数类型_Python int 数字整型类型 定义int()范围大小转换

    本文主题是讲python数字类型python int整型使用方法及技巧.它是不可变数据类型中的一种,它的一些性质和字符串是一样的,注意是整型不是整形哦. Python int有多种数字类型:整型int ...

  6. C语言学习6:数据类型 -> 基本类型 -> 整型类型(int、short int、long int、char等)

    目录 1.数据类型的分类 2.基本整型 int 3.短整型 short int 4.长整型 long int 5.双长整型 long long int 6.字符型 char 7.布尔型 bool 1. ...

  7. java 整型类型_Java基本类型-整型解读

    java的基本类型包括以下几类: 整型 byte short int long 浮点型 float double 字符型 char 布尔型 boolean 它们都有对应的包装类型(如果没有特殊说明,下 ...

  8. 什么是整型类型?Python整型详细介绍

    整数类型(int)简称整型,它用于表示整数,例如,100.2016等.整型字面值的表示方式有四种,分别是十进制.二进制(以"0B"或"0b"开头).八进制(以数 ...

  9. 深入理解Java的整型类型:如何实现2+2=5?

    先看下这段神奇的Java代码: public static void main(String[] args) throws Exception {doSomethingMagic();System.o ...

最新文章

  1. Microsoft NLayerApp案例理论与实践 - 项目简“.NET研究”介与环境搭建
  2. 第三讲 一阶线性ODE
  3. Python入门100题 | 第021题
  4. poj/OpenJ_Bailian - 2528 离散化+线段树
  5. POJ 1611 The Suspects (并查集)
  6. tomcat(10)安全性
  7. 面向对象的代码生成方法
  8. ROS下多个kinect在一台电脑上同时运行
  9. 框架 butterknife
  10. vue token过期如何处理_超市货架上摆放有过期食品如何定性处理?总局这样答复...
  11. 软件项目开发计划书(大纲)
  12. macos ntfs插件_NTFS for Mac 助手 - Mac读写NTFS磁盘工具
  13. EditText属性设置
  14. 无法访问 函数不正确
  15. 我的世界服务器怎么制作头颅,我的世界怎么刷生物头颅 我的世界生物头颅制作方法-游侠网...
  16. vmware 虚拟机安装苹果系统
  17. ndk命令行编译so库
  18. 【无标题】SONET基本术语
  19. 如何群发电子邮件?群发邮箱账号批发吗?
  20. 结果导向和测试驱动(转)

热门文章

  1. 没有好看的 Terminal 怎么能够快乐地写代码
  2. python UnicodeEncodeError 编码错误总结
  3. 业余实现一个统计A股数据工具
  4. iOS如何使用三方字体
  5. c# ArrayList
  6. #翻译NO.3# --- Spring Integration Framework
  7. IIS5.1/IIS6.0 整合Tomcat6.0.14完全版
  8. 广告等第三方应用嵌入到web页面方案 之 使用js片段
  9. jenkins+docker的简单项目部署
  10. SVN的Windows和Linux客户端操作详解