MySQL 如何对字符串类型进行数字排序
MySQL 如何对字符串类型进行数字排序
此内容年代久远,谨慎参考

今天遇到一个奇怪的需求

首先,mysql数据表里面有个info字段,类型为longtxet,里面默认情况下存储的是文字,包括但不限于数字/符号

然后因为某种原因,现在部分数据行里面的info字段存储的是纯数字,可以理解为int类型

现在要将这些数据行以(int)info字段进行排序,原始数据如下图

MySQL 如何对字符串类型进行数字排序
MySQL 如何对字符串类型进行数字排序

我首先想到的就是进行数据类型转换,一狗才知道原来mysql的数据类型转换仅限于几个类型,而且没有string/int互转

强行排序发现是以info字段的第一字符进行排序的,类似于”汉字->(z-a)->(9-0)”这种,如下图所示

MySQL 如何对字符串类型进行数字排序
MySQL 如何对字符串类型进行数字排序

经过查看mysql文档,发现mysql存在一个自动转换,如下图所示,info+0就是让info自动转换为数字类型

MySQL 如何对字符串类型进行数字排序
MySQL 如何对字符串类型进行数字排序
作者
ragnaroks
发布时间
2015-07-31
创作协议