Re: Ordenar resultado por números en campo varchar

From: Alvaro Herrera <alvherre(at)commandprompt(dot)com>
To: Rodrigo Ruiz <rruizf(at)gmail(dot)com>
Cc: pgsql-es-ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Ordenar resultado por números en campo varchar
Date: 2010-09-30 20:23:54
Message-ID: 1285877893-sup-9305@alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Excerpts from Rodrigo Ruiz's message of jue sep 30 12:22:14 -0400 2010:

Hola Rodrigo,

> la siguiente representa parte del resultado de una consulta sobre una
> tabla y que se ordena por el campo 'indice' de forma ascendente.
>
> # select * from tabla order by indice asc;
>
> id | titulo | indice
> ----+----------+--------
> 106 | texto 4 | 1.1
> 115 | texto 13 | 1.10
> 116 | texto 1 | 1.11

¿Tienes un límite de la profundidad de la jerarquía? Una posibilidad es
multiplicar cada parte, por ej. procesar 1.2 para que dé 10200000
(1 * 1000000 + 2 * 10000 + 0 * 100 + 0 * 1) y ordenar por esas
cantidades. Pero si puedes llegar a tener 1.2.3.4.5.6.7 se pone más
difícil.

Quizás podrías usar algo como esto: http://pgfoundry.org/projects/pgrpm/
(No sé qué tan al día esté el código), que provee operadores para
comparar números de versión, que debería ser bastante similar a lo que
quieres hacer aquí.

Otra alternativa sería explorar el contrib ltree a ver si provee
operadores que te sean de utilidad.

Saludos

--
Álvaro Herrera <alvherre(at)commandprompt(dot)com>
The PostgreSQL Company - Command Prompt, Inc.
PostgreSQL Replication, Consulting, Custom Development, 24x7 support

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Desarrollo Escuintla 2010-09-30 20:25:46 Re: Concesionaria de Vehiculos
Previous Message juanramirez 2010-09-30 20:19:57 Re: Concesionaria de Vehiculos