Re: Ordenar resultado por números en campo varchar

From: Rodrigo Ruiz <rruizf(at)gmail(dot)com>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Ordenar resultado por números en campo varchar
Date: 2010-10-01 17:15:19
Message-ID: 4CA61727.3000703@gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

El 01/10/2010 11:57, Oswaldo Hernández escribió:
> El 30/09/2010 18:22, Rodrigo Ruiz escribió:
>> Estimados,
>> 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
>> 107 | texto 5 | 1.2
>> 108 | texto 6 | 1.3
>> 109 | texto 7 | 1.4
>> 110 | texto 8 | 1.5
>> 111 | texto 9 | 1.6
>> 112 | texto 10 | 1.7
>> 113 | texto 11 | 1.8
>> 114 | texto 12 | 1.9
>> 117 | texto 2 | 2.1
>> 118 | texto 3 | 2.2
>>
>> El campo indice es un varchar, si notan, luego del punto 1.1 salta al
>> 1.10, el cual necesito se presente siguiendo al punto 1.9.
>> Intenté pasando el campo a numérico con cast, sin embargo se me
>> complicó, pues podrían existir puntos del tipo 1.2.6 o más detallado aún.
>> La pregunta ya la podrán adivinar, cómo podría obtener el resultado de
>> la consulta de manera ordenada por índice?
>>
>
>
> select indice
> from (values ('4.0.3.2'), ('1.2.3.4'), ('2.3.4.5'),
> ('20.3.1'), ('20.3'), ('4.1'), ('10.3'),
> ('0.5'), ('10.2.7')
> ) foo(indice)
> order by regexp_split_to_array(indice, E'\\.')::integer[];
>
> indice
> ---------
> 0.5
> 1.2.3.4
> 2.3.4.5
> 4.0.3.2
> 4.1
> 10.2.7
> 10.3
> 20.3
> 20.3.1
> (9 filas)
>
>
> :)
>

Perfecto!... muchas gracias. Estaba intentando lo sugerido por Alvaro y
Horacio, separar por los puntos y ordenar, pero tenía el problema de no
conocer la profundidad de los indices.
Sin embargo, con regexp_split_to_array() funcionó de pelos.

Gracias nuevamente a todos.

Saludos.-

--
Rodrigo Ruiz Fuentes

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Jaime Casanova 2010-10-01 17:15:54 Re: Problemas con PgAdmin y PG9.0
Previous Message Marcelo Retamal 2010-10-01 16:56:18 Problemas con PgAdmin y PG9.0