时间:2023-03-17来源:系统城装机大师作者:佚名
想要结果:
每个test_value 里面都包含 ORDER 关键字, 想根据这个关键字 前面的数字进行排序。
使用SUBSTRING_INDEX 函数
sql :
1 | SELECT ID,SUBSTRING_INDEX(test_value, "ORDER" ,1) AS NO , test_value FROM test |
结果:
sql :
1 2 3 4 5 |
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
表示有符号,可以表示小数1 2 3 4 5 |
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:
1 2 3 4 5 |
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:
1 2 3 4 5 |
SELECT * FROM ( SELECT ID,SUBSTRING_INDEX(test_value, "ORDER" ,1) AS NO , test_value FROM test )t ORDER BY CONVERT (t. NO ,SIGNED) |
结果是OK的:
好了,该篇到这里吧~
2023-10-30
windows上的mysql服务突然消失提示10061 Unkonwn error问题及解决方案2023-10-30
MySQL非常重要的日志bin log详解2023-10-30
详解MySQL事务日志redo log一、单表查询 1、排序 2、聚合函数 3、分组 4、limit 二、SQL约束 1、主键约束 2、非空约束 3、唯一约束 4、外键约束 5、默认值 三、多表查询 1、内连接 1)隐式内连接: 2)显式内连接: 2、外连接 1)左外连接 2)右外连接 四...
2023-10-30
Mysql删除表重复数据 表里存在唯一主键 没有主键时删除重复数据 Mysql删除表中重复数据并保留一条 准备一张表 用的是mysql8 大家自行更改 创建表并添加四条相同的数据...
2023-10-30