Mysql指定某个字符串字段前面几位排序查询方式

 更新时间:2023年03月16日 16:32:19   作者:小目标青年  
这篇文章主要介绍了Mysql指定某个字符串字段前面几位排序查询方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

指定某个字符串字段前面几位排序查询

数据样例

想要结果: 

每个test_value 里面都包含 ORDER 关键字, 想根据这个关键字 前面的数字进行排序。

第一步(想办法先截取到 ORDER关键字前面的 值)

使用SUBSTRING_INDEX 函数

sql :

SELECT ID,SUBSTRING_INDEX(test_value,"ORDER",1) AS NO, test_value  FROM  test

结果:

第二步,直接根据NO排序即可? (有坑)

sql :

select * FROM (

SELECT ID,SUBSTRING_INDEX(test_value,"ORDER",1) AS NO, test_value  FROM  test

)t  ORDER BY t.NO DESC 

结果并不是我们想要的:

原因,之前讲过,字符串类型对应mysql排序,它是这样排的:

所以我们需要做转换成数字再排 。

第三步转换排序 

第一种方案 :

使用  CAST函数 转换类型 

  • unsigned 表示无符号,不能表示小数
  • signed 表示有符号,可以表示小数
SELECT * FROM (

SELECT ID,SUBSTRING_INDEX(test_value,"ORDER",1) AS NO, test_value  FROM  test

)t  ORDER BY  CAST(t.NO AS SIGNED) 

结果OK的:

第二种方案

排序的字符串字段值后拼接 0 ,触发转换成数字

sql:

SELECT * FROM (

SELECT ID,SUBSTRING_INDEX(test_value,"ORDER",1) AS NO, test_value  FROM  test

)t  ORDER BY  t.NO+0

结果是OK的:

第三种方案:

CONVERT 函数 转换类型

  • unsigned 表示无符号,不能表示小数
  • signed 表示有符号,可以表示小数

sql:

SELECT * FROM (

SELECT ID,SUBSTRING_INDEX(test_value,"ORDER",1) AS NO, test_value  FROM  test

)t  ORDER BY  CONVERT(t.NO,SIGNED)

结果是OK的:

总结

好了,该篇到这里吧~

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

相关文章

  • mysql线上查询之前要性能调优的技巧及示例

    mysql线上查询之前要性能调优的技巧及示例

    文章介绍了查询优化的几种方法,包括使用索引、避免不必要的列和行、有效的JOIN策略、子查询和派生表的优化、查询提示和优化器提示等,这些方法可以帮助提高数据库性能,减少查询的执行时间和资源消耗,感兴趣的朋友一起看看吧
    2025-03-03
  • 很全面的MySQL处理重复数据代码

    很全面的MySQL处理重复数据代码

    这篇文章主要为大家详细介绍了MySQL处理重复数据的实现代码,如何防止数据表出现重复数据及如何删除数据表中的重复数据,感兴趣的小伙伴们可以参考一下
    2016-05-05
  • Mysql报错1292:Incorrect datetime value for column creat解决方案

    Mysql报错1292:Incorrect datetime value for 

    本文主要介绍了Mysql报错1292:Incorrect datetime value for column create_time at row 1 解决方案,1292 是指插入或更新操作时,日期或时间值不正确引起的错误,下面就来介绍一下
    2024-02-02
  • MySQL创建用户与授权方法

    MySQL创建用户与授权方法

    MySQL中创建用户与授权的实现方法,对于刚开始接触mysql的朋友可以参考下
    2012-11-11
  • 还原大备份mysql文件失败的解决方法分享

    还原大备份mysql文件失败的解决方法分享

    今天在维护公司CRM的时候,恢复一个大的mysql数据库,恢复失败. 用下面方法解决(管理mysql用的是navicat).,设置以下几个参数的值后就正常了,以下语句也可以在mysql的控制台上执行
    2012-09-09
  • MySQL Buffer Pool如何提高页的访问速度

    MySQL Buffer Pool如何提高页的访问速度

    本文主要介绍了MySQL Buffer Pool如何提高页的访问速度,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • Centos7 移动mysql5.7.19 数据存储位置的操作方法

    Centos7 移动mysql5.7.19 数据存储位置的操作方法

    这篇文章主要介绍了Centos7 移动mysql5.7.19 数据存储位置的实现方法,需要的朋友可以参考下
    2017-10-10
  • 浅谈MySQL安装starting the server失败的解决办法

    浅谈MySQL安装starting the server失败的解决办法

    如果电脑是不是第一次安装MySQL,一般会出现报错情况,starting the server失败,通常是因为上次安装的该软件未清除干净,本文就详细的介绍一下解决方法,感兴趣的可以了解一下
    2021-09-09
  • 轻松掌握MySQL函数中的last_insert_id()

    轻松掌握MySQL函数中的last_insert_id()

    相信大家应该都知道Mysql函数可以实现许多我们需要的功能,这篇文章介绍的Mysql函数Last_insert_id()就是其中之一,文章通过一个例子展开来讲,应该更有助于大家的理解和学习,有需要的朋友们下面来一起看看吧。
    2016-12-12
  • mysql行锁(for update)解决高并发问题

    mysql行锁(for update)解决高并发问题

    这篇文章主要介绍了mysql行锁(for update)解决高并发问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08

最新评论