问题是这样的,当我们按由大到小的顺序排序一组数字的时候,它应该如此:

  1. 9800
  2. 8000
  3. 900

但如果是这些数字是以String类型存储的话,直接排序的结果会是这样:

  1. 9800
  2. 900
  3. 8000

当然多数情况下我们会把数字存储为数字型,就可避免这一问题。但还是有一些情形,数字被存储为String。

比如wordpress的postmetas表,它的meta_value已经固定了就是String。当我们需要把meta_value按数字大小排序的时候,直接写order by meta_value就不能达到我们所需要的目的。

SELECT meta_value FROM postmeta WHERE meta_key="count" ORDER BY meta_value DESC;
得到的结果:

  1. 9800
  2. 900
  3. 8000

解决的方法是,在排序语句里把meta_value转成数字再排序,写作-meta_value

SELECT meta_value FROM postmeta WHERE meta_key="count" ORDER BY -meta_value ASC;
得到的结果:

  1. 9800
  2. 8000
  3. 900

此时采用的是按meta_value的负值排序,所以如需得到由大到小的效果,需要使用ASC而非DESC。当然也可以直接用--meta_value DESC

SELECT meta_value FROM postmeta WHERE meta_key="count" ORDER BY --meta_value DESC;
得到的结果一样是:

    1. 9800
    2. 8000
    3. 900

Mysql按数字大小排序String字段的更多相关文章

  1. 将一个整数数组先按照因子数量排序,再按照数字大小排序,输出第k个数

    同小米OJ比赛题:现在有 n 个数,需要用因子个数的多少进行排序,因子个数多的排在后面,因子个数少的排在前面,如果因子个数相同那么就比较这个数的大小,数大的放在后面,数小的放在前面.现在让你说出排序之 ...

  2. 如何让SQLServer的 itemNum 字段 按照数字大小顺序排序

    我的 itemNum 从1到20,可是超过了SQLServer的默认排序这样的1101112...19234567如何才能让排序成为这样1234567891011.. . 解决办法:因为 itemNu ...

  3. 如何在mysql中实现自然排序

    背景 熟悉mysql的同学应该清楚,mysql在对字符串做order by排序时是按照字典序进行排序的,但是如果字符串中包含数字的话(我们称这种类型的字符串为alphanumeric),仅按照字典序的 ...

  4. MySQL数据库中实现对中文字段按照首字字母排序

    转载自网络! 1. 在MySQL中,我们经常会对一个字段进行排序查询,但进行中文排序和查找的时候,对汉字的排序和查找结果往往都是错误的. 这种情况在MySQL的很多版本中都存在. 如果这个问题不解决, ...

  5. Skill 返回一个数字list的大小排序信息

    https://www.cnblogs.com/yeungchie/ code procedure(ycSortList(numlist) prog((size sort) foreach(main ...

  6. 在mysql数据库中关于日期时间字段的处理

    在mysql数据库中关于日期时间字段的处理 在开发中,日期时间字段一般有如下几种设计 假设要获取2013-08-15日到2013-08-16日之间的记录 1. 直接使用日期时间类字段 相关sql语句如 ...

  7. linux 文件&文件夹大小排序

    按照当前文件夹的文件大小排序: ls -l | sort -k 5 -n -r 其中 sort 的几个参数: -k 5: 表示使用第五列字段排序, 当需要按照多个字段排序时, 可使用多个 -k 参数, ...

  8. 【Offer】[53-1] 【数字在排序数组中出现的次数】

    题目描述 思路分析 测试用例 Java代码 代码链接 题目描述 统计一个数字在排序数组中出现的次数.例如,输入排序数组{1,2,3,3,3,3,4,5}和数字3,由于3在这个数组中出现了4次,因此输出 ...

  9. mysql中大数据表alter增加字段报错:"1034 Incorrect key file for table 'table_name'; try to repair it"

    mysql中大数据表alter增加字段报错:"1034 Incorrect key file for table 'table_name'; try to repair it" 现 ...

随机推荐

  1. OpenGL ES 3.0之Shader and program(七)

    着色器对象和程序对象是使用着色器渲染的2种基本的对象类型.一个着色器对象可以当做是一个C编译器,而程序对象作为连接器.一个编译器生成目标代码(如.OBJ,.o文件),对象文件完成创建后,C连接器将该对 ...

  2. 【Python】torrentParser1.04 增加获得磁力链URI功能

    代码: #------------------------------------------------------------------------------------ # torrentP ...

  3. oracle expdp/impdp 用法详解

    http://hi.baidu.com/hzfsai/item/4a4b3fc4b1cf7e51ad00efbd oracle expdp/impdp 用法详解 Data Pump 反映了整个导出/导 ...

  4. HDU 3001 Travelling (三进制状态压缩 DP)

    题意:有 n 个city,能够选择任一城市作为起点,每一个城市不能訪问超过2次, 城市之间有权值,问訪问所有n个城市须要的最小权值. 思路:由于每一个城市能够訪问最多两次,所以用三进制表示訪问的状态. ...

  5. 【Linux】cat充当vi使用(特殊用法)

    1.在终端输入cat >b.txt Linux:/qinys/data # cat >b.txt 2.回车后按下ctrl+d组合键即可完成编辑

  6. 3、redis之java client环境搭建

    JAVA Client环境搭建 POM: <dependency> <groupId>redis.clients</groupId> <artifactId& ...

  7. Axure 实现批量的勾选和反选

    百度网盘:http://pan.baidu.com/s/1gf4RR2b 1.如何实现批量的勾选和反选的操作? 2.步骤 1)创建3个复选框.2个按钮(全选/反选) 2)设置全选按钮点击事件——选中“ ...

  8. CentOS7下HTTP并发测试工具Apache Benchmark(AB)安装和使用

    安装: yum -y install httpd-tools 使用: ab -c -n http://10.255.67.60:1111/info -c 并发数,concurrency -n 发送多少 ...

  9. Oracle下载汇聚

    官方下载oracl软件需要,注册oracle账户.方可下载.... Oracle11.2.0.4 Oracle11.2.0.4 for linux  1-7 http://pan.baidu.com/ ...

  10. net.sf.json.JSONException: &#39;object&#39; is an array. Use JSONArray instead

    list集合转换JSON出错误 意思是:对象"是一个数组. 使用jsonarray取代. 解决方法: 将JSONObject替换为JSONArray 代码: JsonConfig jsonC ...