[AccessD] Sorting Alpha-Numerics

Heenan, Lambert Lambert.Heenan at AIG.com
Tue Oct 21 11:25:21 CDT 2003


This should be a touch faster than Gustav's as it only uses one function
call vs. five.

SELECT Table1.TT
FROM Table1
ORDER BY IsNumeric([tt]), Table1.TT;

Here's the (abridged) output...

000
000
001
001
002
002
003
004
005
006
007
008
009
010
011
012
...
995
996
997
998
999
1A1
1a1
1B2
a23
ZZZ

Lambert

> -----Original Message-----
> From:	Mitsules, Mark [SMTP:Mark.Mitsules at ngc.com]
> Sent:	Tuesday, October 21, 2003 12:13 PM
> To:	'Access Developers discussion and problem solving'
> Subject:	RE: [AccessD] Sorting Alpha-Numerics
> 
> Holy cow...I'm in awe.  I remember a quote from this list a long time ago
> that seems appropriate at the moment.  It read something like "Gustav is a
> legend...cha cha cha"
> 
> Thank you sir,
> 
> 
> Mark
> 
> 
> 
> -----Original Message-----
> From: Gustav Brock [mailto:gustav at cactus.dk] 
> Sent: Tuesday, October 21, 2003 11:57 AM
> To: Access Developers discussion and problem solving
> Subject: Re: [AccessD] Sorting Alpha-Numerics
> 
> 
> Hi Mark
> 
> Oh yeah, one more go to format leading zeroes:
> 
> .. Abs(StrComp(strVal, Right("00" & CStr(Val(strVal)), 3), 1))
> 
> /gustav
> 
> 
> >> Order By Abs(StrComp(strVal, Cstr(Val(strVal)), 1)) ASC, strVal ASC
> 
> > Hmm...on this iteration 100-999 sorted properly first, the remaining 
> > records reverted back to the way it was before...
> 
> > 001
> > .
> > 009
> > 00A
> > .
> > 00Z
> > 010
> > .
> > Etc...
> 
> 
> 
> > Mark
> 
> 
> > -----Original Message-----
> > From: Gustav Brock [mailto:gustav at cactus.dk]
> > Sent: Tuesday, October 21, 2003 11:11 AM
> > To: Access Developers discussion and problem solving
> > Subject: Re: [AccessD] Sorting Alpha-Numerics
> 
> 
> > Hi Mark
> 
> >> Oooh...that is a little closer Gustav.  You must be on the right 
> >> track. That approach put 001 through 019 in order before jumping to 
> >> 01A.
> 
> > Of course ... StrComp returns -1 for that 01A.
> 
> > This should do:
> 
> >   Order By Abs(StrComp(strVal, Cstr(Val(strVal)), 1)) ASC, strVal ASC
> 
> > /gustav
> 
> 
> >> You could do this SQL
> 
> >>  .. Order By StrComp(strVal, Cstr(Val(strVal)), 1) ASC, strVal ASC
> 
> >> /gustav
> 
> 
> >>> Greetings,
> 
> >>> I have a text field containing all possible 3 digit alpha-numeric
> >>> combinations from 000 to ZZZ.  I am looking for a method to sort this 
> >>> text field where 000 through 999 are listed in numerical order before 
> >>> the remaining alpha-numeric combinations are listed in ASCII sort 
> >>> order.  Any suggestions?  I have tried to do this in Excel, however, 
> >>> Excel makes some startling decisions on its own...such as turning 7E9 
> >>> into 7000000000.
> 
> >>> Example:
> >>> 000
> >>> 001
> >>> .
> >>> .
> >>> 998
> >>> 999
> >>> 00A
> >>> 00B
> >>> .
> >>> .
> >>> ZZZ
> 
> _______________________________________________
> AccessD mailing list
> AccessD at databaseadvisors.com
> http://databaseadvisors.com/mailman/listinfo/accessd
> Website: http://www.databaseadvisors.com
> _______________________________________________
> AccessD mailing list
> AccessD at databaseadvisors.com
> http://databaseadvisors.com/mailman/listinfo/accessd
> Website: http://www.databaseadvisors.com


More information about the AccessD mailing list