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-02-02
  • Mysql权限管理grant命令使笔记

    Mysql权限管理grant命令使笔记

    这篇文章主要介绍了Mysql权限管理grant命令使笔记,详细记录了常用权限管理命令,需要的朋友可以参考下
    2014-05-05
  • sql server自动编号的三种方法

    sql server自动编号的三种方法

    自增列是最简单和常见的方法,适用于大多数情况,本文介绍了SQL Server中三种常见的自动编号方法:自增列、序列和触发器,具有一定的参考价值,感兴趣的可以了解一下
    2023-10-10
  • MySQL中JSON_CONTAINS用法、语法、示例及其应用场景

    MySQL中JSON_CONTAINS用法、语法、示例及其应用场景

    这篇文章主要介绍了MySQL中JSON_CONTAINS用法、语法、示例及其应用场景的相关资料,JSON_CONTAINS函数用于检查JSON文档是否包含特定值或对象,这个函数非常适合于处理嵌套的JSON数据和灵活的查询需求,需要的朋友可以参考下
    2024-10-10
  • Mysql深入了解联表查询的特点

    Mysql深入了解联表查询的特点

    这篇文章主要给大家介绍了关于MySQL联表查询的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用MySQL具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2022-07-07
  • MySQL查询数据库所有表名以及表结构其注释(小白专用)

    MySQL查询数据库所有表名以及表结构其注释(小白专用)

    查询数据库所有表的表名、备注,其实也是比较常见的操作,这篇文章主要给大家介绍了关于MySQL查询数据库所有表名以及表结构其注释的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2024-08-08
  • MySQL表列数和行大小限制详解

    MySQL表列数和行大小限制详解

    MySQL在表的列数和行大小方面有一些限制,本文将对这些限制进行详细解释,文中通过代码示例讲解的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2024-04-04
  • MySql中表的复合查询实现示例

    MySql中表的复合查询实现示例

    在MySQL中,复合查询是对多张表进行查询的操作,包括多表查询、自连接、子查询等,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-11-11
  • MySQL索引、存储引擎和SQL优化深入解析

    MySQL索引、存储引擎和SQL优化深入解析

    这篇文章主要介绍了MySQL中的存储引擎和索引的基础知识,存储引擎包括InnoDB、MyISAM和Memory,它们有不同的特性和适用场景,索引是提高查询效率的重要手段,常见的索引类型有B+树索引、Hash索引、R-tree索引和Full-text索引,感兴趣的朋友跟随小编一起看看吧
    2025-12-12

最新评论