先说现象

因为字符串类型的数字比较大小是从第一位开始比较其在字符编码中对应的数值大小,相等则继续比较第二位,不相等就是数值大的为大,例如会出现98,90,889,7800,2,可以参考win文件名数字开头的排序

那应该怎么做呢?

第一种做法

使用cast函数转换

select * from your_table where cast(your_column as signed) > 100012345

第二种

你的列加0,mysql会自动转为数字

select * from your_table where 'your_column+0' > '100012345+0'