mysql中对表中字段id内容为a1,a2,...a22..的排序问题

有人问道比如数据表中有字段sortid,分别有a1到a29的字符,如果查询时加入"order by sortid",排序会是a1,a10,a11...a19,a2,..a29,a3,a4...a9这样的
怎样可以让它以a1,a2,a3....a28,a29这样排序输出呢?

下面建一个测试用表
CREATE TABLE `test_njj` (
        `id` int(10) NOT NULL auto_increment,
        `sortid` varchar(20) NOT NULL,
        `user_id` int(10) NOT NULL default '0',
        PRIMARY KEY  (`id`)
        ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

我们只需用mysql内建函数 SUBSTRING(str,pos)拆分sortid就可以了
select SUBSTRING(sorid,2) from test_njj
可以看到已经把a过滤掉了,但是排序仍然不对,因为这时拆分的数字虽然是数字,但仍被认为是字符串,所以有必要转换成数字,让
SUBSTRING(sorid,2)*1即可
所以用
select * from test_njj order by SUBSTRING(sortid,2)*1;
即可。
以上在mysql4.1.18测试通过
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值