MySQL字符串转数字的3种方式实例
前言
MySQL数据表t的c1列是varchar字符串类型,存储如下记录

如果按照"T+数字"中的"数字"排序,常规的操作order by c1,执行是错误的,实际上按照字符串的ASCII排序的,
select * from t01 order by c1;

如果顺着想,字符串截取出"T+数字"中的"数字"排序,
select * from t01 order by substr(c1, 2);
还是不对的,因为本质上,还是按照字符串进行的排序,

针对这个需求,可以有三种方案
(1)字段值 + 0
MySQL会根据上下文自动转换类型,通过"字段值+0",可以将原本是字符类型的字段值以数值型返回,
select * from t01 order by substr(c1, 2) + 0;

(2)CAST函数
CAST()函数可以将一个字段的值转成另一个类型并输出。
语法:CAST(字段名 AS 转换的类型)
select * from t01 order by cast(substr(c1, 2) as unsigned);

其中,
unsigned,表示无符号,不能表示小数。
signed,表示有符号,可以表示小数。
(3)CONVERT函数
CONVERT()函数,将一个字段的值转成另一个类型并输出。
语法:CONVERT(字段名, 转换的类型)
select * from t01 order by convert(substr(c1, 2), unsigned);

其中
unsigned,表示无符号,不能表示小数。
signed,表示有符号,可以表示小数。
总结
到此这篇关于MySQL字符串转数字的3种方式的文章就介绍到这了,更多相关MySQL字符串转数字内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
MySQL中的聚簇索引、非聚簇索引、联合索引和唯一索引详细介绍
本文主要介绍了MySQL的索引类型,根据索引的存储方式来划分,索引可以分为聚簇索引和非聚簇索引。聚簇索引的特点是叶子节点包含了完整的记录行,而非聚簇索引的叶子节点只有所以字段和主键ID,感兴趣的同学可以阅读本文2023-04-04
MySql查询某个时间段内的数据实例(前一周、前三个月、前一年等)
在实际工作中需要整理一份时间在规定时间前后的统计表,下面这篇文章主要给大家介绍了关于MySql查询某个时间段内的数据的相关资料,包括前一周、前三个月、前一年等,需要的朋友可以参考下2022-10-10


最新评论