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存储过程的查看与删除实例讲解

    MySQL存储过程的查看与删除实例讲解

    存储过程存储过程在创建之后,被保存在服务器上以供使用,直至被删除,下面这篇文章主要给大家介绍了关于MySQL存储过程的查看与删除的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-03-03
  • mysql获取排列序号的三种常用方法小结

    mysql获取排列序号的三种常用方法小结

    这篇文章主要介绍了mysql获取排列序号的三种常用方法,并通过代码示例和图文给大家介绍的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2024-03-03
  • MySQL的事务特性概念梳理总结

    MySQL的事务特性概念梳理总结

    这篇文章主要介绍了MySQL的事务特性概念梳理总结,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的朋友可以参考一下
    2022-07-07
  • SQL 列不同的表查询结果合并操作

    SQL 列不同的表查询结果合并操作

    这篇文章主要介绍了SQL 列不同的表查询结果合并操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-10-10
  • mysql主从基于docker和django实现读写分离

    mysql主从基于docker和django实现读写分离

    这篇文章主要介绍了mysql主从基于docker和django实现读写分离,文章围绕主题展开详细的内容介绍,具有一定的参考价值,感兴趣的小伙伴可以参考一下
    2022-08-08
  • MySQL-tpch 测试工具简要手册

    MySQL-tpch 测试工具简要手册

    tpch是TPC(Transaction Processing Performance Council)组织提供的工具包。用于进行OLAP测试,以评估商业分析中决策支持系统(DSS)的性能。它包含了一整套面向商业的ad-hoc查询和并发数据修改,强调测试的是数据库、平台和I/O性能,关注查询能力
    2016-05-05
  • Mysql ERROR 1067: Invalid default value for字段问题

    Mysql ERROR 1067: Invalid default v

    这篇文章主要介绍了Mysql ERROR 1067: Invalid default value for字段问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05
  • mysql优化的重要参数 key_buffer_size table_cache

    mysql优化的重要参数 key_buffer_size table_cache

    MySQL服务器端的参数有很多,但是对于大多数初学者来说,众多的参数往往使得我们不知所措,但是哪些参数是需要我们调整的,哪些对服务器的性能影响最大呢
    2016-05-05
  • MySQL之高可用架构详解

    MySQL之高可用架构详解

    大家好,本篇文章主要讲的是MySQL之高可用架构详解,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2021-12-12
  • Windows环境下MySQL 8.0 的安装、配置与卸载

    Windows环境下MySQL 8.0 的安装、配置与卸载

    这篇文章主要介绍了Windows环境下MySQL 8.0 的安装、配置与卸载步骤,本文分步骤给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-09-09

最新评论