mysql 在默认情况下使用order by column_name desc/asc 进行排序的时候,排序规则是按照ASCII码进行排序的
需求:对整数,字符串进行排序
语法:
order by 字段名称+0 desc/asc的形式进行排序
order by 字段名称*1 desc/asc的形式进行排序
mysql会将字符串类型的数据当作数值进行处理,但是存在效率问题,不推荐使用varchar/char类型来存储数值,这样会带来不不必要的问题
示例:
# 创建表
create table testSort(
id int(11) PRIMARY KEY auto_increment,
name varchar(25),
age varchar(20)
);
# 插入三条数据
INSERT INTO testSort (name,age) VALUES ("刘德华","57");
INSERT INTO testSort (name,age) VALUES ("张国荣","60");
INSERT INTO testSort (name,age) VALUES ("黄日华","23");
#根据id数值排序
select * from testSort order by id;
#根据age字符串排序
select * from testSort order by age+0;
select * from testSort order by age*1;