首页 > 数据库 > 数据库开发技术 > MySQL字符串转数字三种方式
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);
其中,
(3)CONVERT函数
CONVERT()函数,将一个字段的值转成另一个类型并输出。
语法:CONVERT(字段名, 转换的类型)
select * from t01 order by convert(substr(c1, 2), unsigned);
其中,
如果您认为这篇文章有些帮助,还请不吝点下文章末尾的"点赞"和"在看",或者直接转发pyq,

原文作者:bisal的个人杂货铺;如有侵权,请联系管理员删除。