大家好!有问题请教!
数据库是oracle,我想对查询结果按照我指定的顺序排列,并不是按照常规的某个字段的升序或降序。
例如,ssx_dm这个字段,是字符串类型,我想按照此字段第3个字符(T,B,D,C...)的顺序排列查询结果。
谢谢大家帮忙,小女子不胜感激!

解决方案 »

  1.   

    select * from table order by substr(ssx_dm,3,1)
      

  2.   

    如果是按你指定的顺序,那要用DECODE
    select * from
    (select *,decode(substr(ssx_dm,3,1),'T',1,'B',2,'D',3,'C',4,5) rn
    from table
    ) a  order by a.rn
      

  3.   

    select * from table order by substr(ssx_dm,instr(ssx_dm,',',1,2)+1)
    这个可以表示可能不止一个字符,只是以第3个分割来排序
      

  4.   

    如果都列出来,也可以这样
    order by translate(substr(ssx_dm,3,1),'TBDC','1234')
      

  5.   

    如果都列出来,也可以这样
    order by translate(substr(ssx_dm,3,1),'TBDC','1234')
      

  6.   

    佩服楼上的fosjos,对函数应用真是炉火纯青。
      

  7.   

    谢谢大家。不过,我遇到问题可能还要复杂些,因为数据库数据内容比较丰富,substr(ssx_dm,3,1)取出来的内容肯定超过26个字符,0~9个数字等,至少也有30个吧。所以朋友fosjos方案不错,但对我好想还是不可行。请大家在帮我想想辙。谢谢!
      

  8.   

    谢谢大家。不过,我遇到问题可能还要复杂些,因为数据库数据内容比较丰富,substr(ssx_dm,3,1)取出来的内容肯定超过26个字符,0~9个数字等,至少也有30个吧。所以朋友fosjos方案不错,但对我好想还是不可行。请大家在帮我想想辙。谢谢!
      

  9.   

    2楼的decode还不行吗那就只能用case when了
      

  10.   

    新建一个ordTab  定义你的排序字段 然后关联排序