相关文章推荐
豪情万千的吐司  ·  What is Server Core? ...·  8 月前    · 
活泼的树叶  ·  handshake failed; ...·  1 年前    · 
乖乖的树叶  ·  The provided URL is ...·  1 年前    · 
首页 > 数据库 > Mysql > Mysql指定某字符串字段前面几位排序查询

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

作者:小目标青年

这篇文章主要介绍了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 ,触发转换成数字

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 表示有符号,可以表示小数
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分区表分区策略详解
    2023-07-07
  • MySQL如何生成自增的流水号
    MySQL如何生成自增的流水号
    2023-07-07
  • mysql 窗口函数 ROW_NUMBER、NTILE详解
    mysql 窗口函数 ROW_NUMBER、NTILE详解
    2023-07-07
  • mysql实现递归查询的方法示例
    mysql实现递归查询的方法示例
    2023-07-07
  • mysql创建用户授权步骤详解
    mysql创建用户授权步骤详解
    2023-07-07
  • MySQL中DML添加数据insert的操作方法
    MySQL中DML添加数据insert的操作方法
    2023-07-07
  • MySQL使用mysqldump实现数据完全备份
    MySQL使用mysqldump实现数据完全备份
    2023-07-07
  • 美国设下计谋,用娘炮文化重塑日本,已影响至中国
    美国设下计谋,用娘炮文化重塑日本,已影响至中国
    2021-11-19
  • 时空伴随者是什么意思?时空伴随者介绍
    时空伴随者是什么意思?时空伴随者介绍
    2021-11-09
  • 工信部称网盘企业免费用户最低速率应满足基本下载需求,天翼云盘回应:坚决支持,始终
    工信部称网盘企业免费用户最低速率应满足基本下载需求,天翼云盘回应:坚决支持,始终
    2021-11-05
  • 2022年放假安排出炉:五一连休5天 2022年所有节日一览表
    2022年放假安排出炉:五一连休5天 2022年所有节日一览表
    2021-10-26
  • 电脑版 - 返回首页

    2006-2023 脚本之家 JB51.Net , All Rights Reserved.
    苏ICP备14036222号