varchar类别的字段存储纯数字的排序
发布时间:2022-06-27 18:11:51 所属栏目:MySql教程 来源:互联网
导读:如果表字段的类型为varchar型,但是里面存储的是纯数字,怎么实现按照数字的大小来排序? 下面的方法对于mysql和oracle都实用 order by 字段+0 order by 字段*1 等等都可以实现 mysql create table tn (id varchar(30),name varchar(50)); mysql show crea
如果表字段的类型为varchar型,但是里面存储的是纯数字,怎么实现按照数字的大小来排序? 下面的方法对于mysql和oracle都实用 order by 字段+0 order by 字段*1 等等都可以实现 mysql> create table tn (id varchar(30),name varchar(50)); mysql> show create table tn; +-------+-----------------------------------------------------------------------------------------------------------------------------+ | Table | Create Table | +-------+-----------------------------------------------------------------------------------------------------------------------------+ | tn | CREATE TABLE `tn` ( `id` varchar(30) DEFAULT NULL, `name` varchar(50) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8 | mysql> select * from tn; +------+------+ | id | name | +------+------+ | 1 | a | | 10 | b | | 11 | bb | | 2 | bb | | 5 | c | | 3 | f | | 6 | g | +------+------+ 使用order by语句进行排序 mysql> select * from tn order by id desc; +------+------+ | id | name | +------+------+ | 6 | g | | 5 | c | | 3 | f | | 2 | bb | | 11 | bb | | 10 | b | | 1 | a | +------+------+ 7 rows in set (0.00 sec) 貌似是不起作用,因为id列的值存的是字符串类型的 解决: 使用字段+0解决 mysql> select * from tn order by id+0 desc; +------+------+ | id | name | +------+------+ | 11 | bb | | 10 | b | | 6 | g | | 5 | c | | 3 | f | | 2 | bb | | 1 | a | +------+------+ 7 rows in set (0.00 sec) 或者使用 字段*1解决 mysql> select * from tn order by id*1 desc; +------+------+ | id | name | +------+------+ | 11 | bb | | 10 | b | | 6 | g | | 5 | c | | 3 | f | | 2 | bb | | 1 | a | +------+------+ 7 rows in set (0.00 sec) (编辑:昌吉站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐