全部博文(2065)
分类: Mysql/postgreSQL
2009-06-08 10:57:14
假设表A中有字段str_id为字符串类型(varchar),如果我们想对它进行升序或者降序排列,会出现如下问题:
升序
1、10、11、12、2、3、4、5、6、7、8、9
降序
9、8、7、6、5、4、3、2、12、11、10、1
并没有实现我们的目的
如何解决呢?只要将str_id字段+0或*1就可以啦。当然前提是str_id字段里面必须是数字类型的字符串。
例如:
一、
select * from table A order by str_id+0 desc 将月份进行降序序排列
二、
select * from table A order by str_id*1 将月份进行升序排列
这样就达到了我们的目的。
chinaunix网友2009-06-08 11:40:07
今天遇到了一个问题: 有一个字段是varchar类型的 内容格式为19.2.168.100 我需要对其进行排序操作。首先进行168这个位置上面的排序 然后在进行100这个位置上面的排序。 一开始使用order by 字段 能够对某些字段是正常的。可是用到有几条记录的时候就会出现问题了。然后我用substring_index函数进行分割这个字段值然后对这个字段值进行逐一比较处理! 就可以成功了。 order by cast(substring_index(host,'.',3) as unsigned) asc