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
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 |