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的:

总结

好了,该篇到这里吧~

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

相关文章

  • Mac下mysql 8.0.22 找回密码的方法

    Mac下mysql 8.0.22 找回密码的方法

    这篇文章主要介绍了Mac下mysql 8.0.22 找回密码的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-11-11
  • select into from和insert into select的使用举例详解

    select into from和insert into select的使用举例详解

    select into from和insert into select都是用来复制表,下面这篇文章主要给大家介绍了关于select into from和insert into select使用的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-04-04
  • mysql创建表分区的实现示例

    mysql创建表分区的实现示例

    表分区是指根据一定规则,将数据库中的一张表分解成多个更小的,容易管理的部分,本文主要介绍了mysql创建表分区的实现示例,感兴趣的可以了解一下
    2024-01-01
  • 详解MySQL存储过程的创建和调用

    详解MySQL存储过程的创建和调用

    这篇文章主要为大家介绍了MySQL存储过程的创建和调用,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2021-12-12
  • mysql查询结果输出到文件的方法

    mysql查询结果输出到文件的方法

    下面小编就为大家带来一篇mysql查询结果输出到文件的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-01-01
  • mysql触发器中包含select语句问题

    mysql触发器中包含select语句问题

    这篇文章主要介绍了mysql触发器中包含select语句问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • MySQL 原理与优化之Update 优化

    MySQL 原理与优化之Update 优化

    这篇文章主要介绍了MySQL 原理与优化之Update 优化,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下,希望对你的学习有所帮助
    2022-08-08
  • MySQL中data_sub()函数定义和用法

    MySQL中data_sub()函数定义和用法

    使用 date_sub() 函数,从 answer_date 减去相应的天数,这个天数是由上面计算的行号决定,也就是减去行号,从而来生成一个新的日期,这篇文章主要介绍了MySQL中data_sub()函数,需要的朋友可以参考下
    2024-02-02
  • MySQL表字段时间设置默认值

    MySQL表字段时间设置默认值

    很多人可能会把日期类型的字段的类型设置为 date或者 datetime,但是这些不是当前时间,那么如何把字段时间设置成当前时间,本文就具体来介绍一下
    2021-05-05
  • MySQL优化及索引解析

    MySQL优化及索引解析

    这篇文章主要介绍了MySQL优化及索引解析,索引关系型数据库为了加速对表中行数据检索的数据结构,下面文章详细内容,需要的小伙伴可以参考一下
    2022-03-03

最新评论