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

今天遇到一个需求

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

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

现在要将这些数据行以(int)info字段进行排序,原始数据如下图
MySQL如何对字符串类型进行数字排序
我首先想到的就是进行数据类型转换,一狗才知道原来mysql的数据类型转换仅限于几个类型,而且没有string/int互转

强行排序发现是以info字段的第一字符进行排序的,类似于”汉字->(z-a)->(9-0)”这种,如下图所示
MySQL如何对字符串类型进行数字排序
经过查看mysql文档,发现mysql存在一个自动转换,如下图所示,info+0就是让info自动转换为数字类型
MySQL如何对字符串类型进行数字排序
info+999也没关系,仅仅是让mysql对其进行自动转换


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!