RE: "correct" sorting.

Поиск
Список
Период
Сортировка
От Joel Burton
Тема RE: "correct" sorting.
Дата
Msg-id Pine.LNX.4.21.0105031641120.8112-100000@olympus.scw.org
обсуждение исходный текст
Ответ на RE: "correct" sorting.  ("Gerald Gutierrez" <gutz@kalador.com>)
Список pgsql-sql
On Thu, 3 May 2001, Gerald Gutierrez wrote:

> Hi folks,
> 
> say i have a text field with teh values
> 
> 1,2,3,10,20,30,1a,1b,2a,2b
> 
> and i want to sort it so i get,
> 
> 1
> 1a
> 1b
> 2
> 2a
> 2b
> 3
> 10
> 20
> 30
> 
> is there anyway to do that with postgresql ?
> below is what actually happens.
> 
> jeff=> select * from foo order by var1;
>  var1
> ------
>  1
>  10
>  1a
>  1b
>  2
>  20
>  2a
>  2b
>  3
>  30
>  3a
>  3b
> (12 rows)

Hmmm... howzabout

<ugly hack>

create a function order_val(text) returning an integer, which is
equal to the the input, coerced into an integer (for simple things, like
10, 20, etc.), but equal to 10.01 for 10a, 10.02 for 10b, 10.25 for 10z.
(pl/perl, pl/tcl, or pl/python might be a quicker choice for this than
pl/pgsql)

You could then

SELECT id FROM tbl ORDER BY order_val(id);

And you could even index on order_val(id), so that it runs a bit faster.

</ugly hack>

-- 
Joel Burton   <jburton@scw.org>
Director of Information Systems, Support Center of Washington



В списке pgsql-sql по дате отправления:

Предыдущее
От: "Gerald Gutierrez"
Дата:
Сообщение: RE: "correct" sorting.
Следующее
От: Roberto Mello
Дата:
Сообщение: Re: How to encode and decode password in pgsql !!