mysql中如何用varchar字符串按照数字排序

 更新时间:2023年08月26日 16:20:02   作者:ElenaYu  
这篇文章主要介绍了mysql中用varchar字符串按照数字排序方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

mysql用varchar字符串按照数字排序

问题

对mysql数值字符串类型进行排序,在默认情况下使用order by 字段名称 desc/asc 进行排序的时候,mysql进行的排序规则是按照ASCII码进行排序的,并不会自动的识别出这些数据是数值。

如:

L1,L2,L3…L10,L11排序,按照常规的 desc/asc 进行排序,结果为:L1,L10,L11,L2,L3…table:

执行sql:

select * from test order by score asc; 

结果为:

期望:按照L1,L2,L3…L10,L11…的顺序排序

解决

方法1:

select * from test order by score-0 asc;

方法2:

select * from test order by cast(score as signed ) asc;

方法3:

select * from test order by convert(score,signed) asc;

方法4(亲测有效):

select * from test order by substr(score from 2)-0 asc;

以上方法,查询结果为:

问题解决!

mysql按数值大小排序varchar字段

select * from table_name where 1 order by meta_value DESC;  一般用法,当排序varchar类型的数字内容时就会出现问题;
select * from table_name where 1 order by --meta_value DESC;  这样就会按照数字的大小排序了。

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

它应该如此:

  • 9800
  • 8000
  • 900

但如果是这些数字是以varchar类型存储的话,

直接排序的结果会是这样:

  • 9800
  • 900
  • 8000

解决方案1:

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

解决方案2:

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

当然也可以直接用

--meta_value DESC ​​​​​​​

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • MySQL下PID文件丢失的相关错误的解决方法

    MySQL下PID文件丢失的相关错误的解决方法

    这篇文章主要介绍了MySQL下PID文件丢失的相关错误的解决方法,具体的提示可能会是"mysql PID file not found and Can’t connect to MySQL through socket mysql.sock",需要的朋友可以参考下
    2015-07-07
  • MYSQL数据库如何设置主从同步

    MYSQL数据库如何设置主从同步

    大家好,本篇文章主要讲的是MYSQL数据库如何设置主从同步,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-01-01
  • MySQL与PHP的基础与应用专题之自连接

    MySQL与PHP的基础与应用专题之自连接

    MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,本系列将带你掌握php与mysql的基础应用,本篇从自连接开始
    2022-02-02
  • MySQL深分页问题解决的实战记录

    MySQL深分页问题解决的实战记录

    优化项目代码过程中发现一个千万级数据深分页问题,觉着有必要给大家总结整理下,这篇文章主要给大家介绍了关于解决MySQL深分页问题的相关资料,需要的朋友可以参考下
    2021-09-09
  • MySQL使用游标批量处理进行表操作

    MySQL使用游标批量处理进行表操作

    这篇文章主要介绍了MySQL使用游标批量进行表操作,包括批量添加索引、批量添加字段等,感兴趣的小伙伴们可以参考一下
    2016-03-03
  • MySQL8.0.20压缩版本安装教程图文详解

    MySQL8.0.20压缩版本安装教程图文详解

    这篇文章主要介绍了MySQL8.0.20压缩版本安装教程,需本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,要的朋友可以参考下
    2020-08-08
  • MySQL中create_time和update_time实现自动更新时间

    MySQL中create_time和update_time实现自动更新时间

    mysql建表的时候有两个列,一个是createtime、另一个是updatetime,这两个都是mysql自动填充时间的方式,本文就详细的介绍这两种方式的实现,感兴趣的可以了解一下
    2023-05-05
  • MySQL InnoDB 事务锁源码分析

    MySQL InnoDB 事务锁源码分析

    InnoDB 事务锁,事务锁实现起来的代码却是又臭又硬的好大一坨,各种细节,今天小编在这里整理一个源码阅读笔记,把那一坨加锁相关的代码提炼出来,感兴趣的小伙伴别忘记收藏奥
    2021-09-09
  • MySql执行流程与生命周期详解

    MySql执行流程与生命周期详解

    当你执行一次MySQL查询时,有没有仔细想过,在查询结果返回之前,经过了哪些步骤呢?这些步骤有可能消耗了超出想象的时间和资源。因此,在对MySQL的查询进行优化之前,应该了解一下MySQL查询的生命周期
    2022-09-09
  • Windows系统下MySQL添加到系统服务方法(mysql解压版)

    Windows系统下MySQL添加到系统服务方法(mysql解压版)

    这篇文章主要介绍了Windows系统下MySQL添加到系统服务方法,主要针对mysql解压版,感兴趣的朋友参考下吧
    2016-05-05

最新评论