返回顶部
首页 > 资讯 > 数据库 >Mysql指定某个字符串字段前面几位排序查询方式
  • 531
分享到

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

Mysql字符串Mysql排序查询Mysql排序 2023-03-19 17:03:40 531人浏览 八月长安
摘要

目录指定某个字符串字段前面几位排序查询数据样例第一步(想办法先截取到 ORDER关键字前面的 值)第二步,直接根据NO排序即可? (有坑)第三步转换排序 总结指定某个字符串字段前面几位排序查询 数据样例 想要

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

数据样例

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

想要结果: 

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

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

使用SUBSTRING_INDEX 函数

sql

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

结果:

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

第二步,直接根据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指定某个字符串字段前面几位排序查询方式

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

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

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

第二种方案

排序的字符串字段值后拼接 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的:

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

第三种方案:

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指定某个字符串字段前面几位排序查询方式

总结

好了,该篇到这里吧~

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

您可能感兴趣的文档:

--结束END--

本文标题: Mysql指定某个字符串字段前面几位排序查询方式

本文链接: https://lsjlt.com/news/200029.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作