Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
![]() |
![]() |
Home -> Community -> Mailing Lists -> Oracle-L -> RE: Order By Character Column
Hmm, it's a little kludgy, but I don't see a more straightforward =
approach.
Try this:
create table sort_test(a number);
insert into sort_Test values('B'); insert into sort_Test values('A'); insert into sort_Test values('20'); insert into sort_Test values('11'); insert into sort_Test values('7'); insert into sort_Test values('1');
ret_val:=3D 1;
else
ret_val:=3D 0;
end if;
return ret_val;
end;
/
select * from sort_test order by =
decode(is_number(a),1,to_number(a),999999),a;
But, I'd be interested in a more elegant solution, if someone has got = one.
-Mark
> -----Original Message----- > From: oracle-l-bounce_at_freelists.org > [mailto:oracle-l-bounce_at_freelists.org]On Behalf Of Keith M Cutler > Sent: Wednesday, October 27, 2004 11:31 AM > To: oracle-l_at_freelists.org > Subject: Order By Character Column
> I have a report which requires I order the results by a column called > row_name. This column is varchar2(8) with values being both=20 > letters and > numbers (as characters). I need to order the output as follows: > =20
> 1
> 2
> 7
> 11
> 20
> A
> B
> =20
> I've tried using.=20
> =20
> decode(instr(translate(row_name,'0123456789ABCDEFGHIJKLMNOPQRS > TUVWXYZ','0000 > 000000XXXXXXXXXXXXXXXXXXXXXXXXXX'),'X',1),1,row_name,
> 2,row_name,
> 3,row_name,
> 4,row_name,
> 5,row_name,
> 6,row_name,
> 7,row_name,
> 8,row_name,
> to_number(row_name))
> =20
> but get results.
> =20
> 1
> 11
> 2
> 20
> 7
> A
> B
> =20
> Anyone have an idea how I can get the specified output?
> =20
> Thanks.
> =20
> =20
> Keith M. Cutler
> Oracle 8i Certified DBA=20
> keith_at_etix.com
> =20
> =20
> =20
> =20
> -- > http://www.freelists.org/webpage/oracle-l
-- http://www.freelists.org/webpage/oracle-lReceived on Wed Oct 27 2004 - 11:39:14 CDT
![]() |
![]() |