Login
网站首页 > 文章中心 > 其它

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

作者:小编 更新时间:2023-08-17 22:31:16 浏览量:343人看过

今天小编给大家分享一下Mysql怎么指定某个字符串字段前面几位排序查询的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面粉丝们和小编一起分析一哈吧.

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

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

Mysql怎么指定某个字符串字段前面几位排序查询-图1

想要结果:?

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

使用SUBSTRING_INDEX 函数

sql :

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

结果:

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

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 函数 转换类型

SELECT?*?FROM?(

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

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

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

以上就是土嘎嘎小编为大家整理的Mysql怎么指定某个字符串字段前面几位排序查询相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章