最近开发一个功能,需要用到mysql的排序,在进行测试的时候,发现异常,没有按照预期的顺序来排序,查询后发现,原来是和字段类型有关系。数据库中排序的字段类型是varchar,而我期望的排序是int类型的顺序。
建表语句如下:
CREATE TABLE `company`.`Untitled` (
`name` varchar(255) CHARACTER SET gb2312 COLLATE gb2312_chinese_ci NULL DEFAULT NULL,
`order` varchar(255) CHARACTER SET gb2312 COLLATE gb2312_chinese_ci NULL DEFAULT NULL,
`file1` varchar(255) CHARACTER SET gb2312 COLLATE gb2312_chinese_ci NULL DEFAULT NULL
) ENGINE = InnoDB CHARACTER SET = gb2312 COLLATE = gb2312_chinese_ci ROW_FORMAT = Compact;
查询语句:
SELECT * from test t order by t.order
排序结果如下:
修改方法就是排序的时候添加一个+0,sql如下:
SELECT * from test t order by (t.order+0)
得到了正确的结果
特此记录。