今天遇到一个需求,首先,mysql数据表里面有个info字段,类型为longtxet,里面默认情况下存储的是文字,包括但不限于数字/符号.
然后因为某种原因,现在部分数据行里面的info字段存储的是纯数字,可以理解为int类型.
现在要将这些数据行以(int)info字段进行排序,原始数据如下图:
MySQL如何对字符串类型进行数字排序

我首先想到的就是进行数据类型转换,一狗才知道原来mysql的数据类型转换仅限于几个类型,而且没有string/int互转.
强行排序发现是以info字段的第一字符进行排序的,类似于”汉字->(z-a)->(9-0)”这种,如下图所示:
MySQL如何对字符串类型进行数字排序

经过查看mysql文档,发现mysql存在一个自动转换,如下图所示,`info`+0就是让`info`自动转换为数字类型.
MySQL如何对字符串类型进行数字排序
ps. `info`+999也没关系,仅仅是让mysql对其进行自动转换.