Chinaunix首页 | 论坛 | 博客
  • 博客访问: 29956432
  • 博文数量: 2065
  • 博客积分: 10377
  • 博客等级: 上将
  • 技术积分: 21525
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-04 17:50
文章分类

全部博文(2065)

文章存档

2012年(2)

2011年(19)

2010年(1160)

2009年(969)

2008年(153)

分类: 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       将月份进行升序排列

这样就达到了我们的目的。

阅读(877) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

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