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