Re: problem with sorting using 'ORDER BY' when character field is filled with numerical values

From: Thomas Beutin <tyrone(at)laokoon(dot)IN-Berlin(dot)DE>
To: Dragan Matic <mlists(at)panforma(dot)co(dot)yu>, pgsql-general(at)postgresql(dot)org
Subject: Re: problem with sorting using 'ORDER BY' when character field is filled with numerical values
Date: 2004-05-20 22:14:47
Message-ID: 20040521001447.A1289@laokoon.bug.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On Thu, May 20, 2004 at 05:18:39PM +0200, Dragan Matic wrote:
> If I have a table t with column c which is defined as char(5) and fill
> it with following values:
[...]

> and then do the following: SELECT C FROM T ORDER BY C
> Postgres gives me the following
>
> 1
> 11
> 12
> 14
> 2
[...]

> the same thing done with MS SQL server gives this as a result:
[...]

> which is the result I find more logical, meaning the user would expect
> data sorted this way. Is there some way to make Postgres sort elements
no, the first is the logical if You sort a char(5) field.

> in this way (setting sort order or collation, I suppose)? Tnx in advance
You should try an "ORDER BY to_number(<your_column>, '99999')"

Greetings,
-tb
--
Thomas Beutin tb(at)laokoon(dot)IN-Berlin(dot)DE
Beam me up, Scotty. There is no intelligent live down in Redmond.

In response to

Browse pgsql-general by date

  From Date Subject
Next Message NTPT 2004-05-20 22:31:52 Unix timestamp , unix timestamp with microseconds ?
Previous Message In. Martin Prášek 2004-05-20 22:11:18 Unix timestamp , unix timestamp with microseconds