Re: Orden alfabetico raro

From: Álvaro Hernández Tortosa <aht(at)Nosys(dot)es>
To: Felipe de Jesús Molina Bravo <fjmolinabravo(at)gmail(dot)com>
Cc: pgsql <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Orden alfabetico raro
Date: 2011-05-18 15:25:59
Message-ID: 20110518152559.GY1033@nosys.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Wed, May 18, 2011 at 08:31:58AM -0500, Felipe de Jesús Molina Bravo escribió:

>Que tal
>
>Tengo algunas dudas con el orden de postgres .... observen el resultado de
>la sig. consulta:aeedc=# select * from unnest(array['San Sebastián
>Nicananduta', 'Santa María Nduayaco', 'San alejandro', 'San Vicente Nu',
>'Teotongo']) x order by x;
>
> x
>---------------------------
> San alejandro
> San Sebastián Nicananduta
> Santa María Nduayaco
> San Vicente Nu
> Teotongo
>(5 filas)
>
>El orden esperado según yo debe ser:
>
> San alejandro
> San Sebastián Nicananduta
> San Vicente Nu
> Santa María Nduayaco
> Teotongo
>
>Es correcto lo que espero? a que se debe tal funcionamiento de postgres?
>

Hola.

En PostgreSQL la ordenación de cadenas de texto es dependiente
del collation del SO. Así, lo primero sería encesario conocer dicho
valor para tu base de datos (SHOW lc_collate). Independientemente, creo
que se ordenan en una primera pasada las "letras" y luego los otros
caracteres (como los espacios) por lo que ignorando el espacio (y el
case) la "v" de "San Vicente Nu" está después de la "t" de "Santa María
Nduayaco". De ahí el resultado de postgres.

Soluciones:

- Escribirte un operador ("CREATE OPERATOR mioperador") que ordene como
desees, y hacer la consulta con "ORDER BY x USING mioperador").

- Aunque menos generalista, mucho más sencillo si te vale para tu caso:
eliminar el espacio y ordenar por esa columna. Algo similar a:

SELECT x FROM unnest(array['San Sebastián Nicananduta', 'Santa María Nduayaco', 'San alejandro', 'San Vicente Nu','Teotongo']) AS x ORDER BY regexp_split_to_array(x, ' ') ASC;

Espero que te sirva. Saludos,

Álvaro

--

Álvaro Hernández Tortosa

-----------
NOSYS
Networked Open SYStems

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Cesar Cejas 2011-05-18 16:42:44 Dear:
Previous Message Mario Cassanelli 2011-05-18 14:55:07 Re: Orden alfabetico raro