Re: [Pgsql-ayuda] Duda con el Order by...

From: Victor Chavez <vchavezp(at)yahoo(dot)com>
To: Alvaro Herrera Munoz <alvherre(at)dcc(dot)uchile(dot)cl>
Cc: pgsql-ayuda(at)tlali(dot)iztacala(dot)unam(dot)mx
Subject: Re: [Pgsql-ayuda] Duda con el Order by...
Date: 2003-11-20 14:07:52
Message-ID: 20031120140752.23850.qmail@web40410.mail.yahoo.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Gracias por la respuesta...

Tuve que reiniciar el entorno de la base de datos con
initdb --lc-collate=C y ahora los registros se ordenan
de acuerdo a lo que esperaba. Hice que se creara un
archivo llamado lista.txt con el resultado de la
consulta y lo abrí y ordene con el Calc del
OpenOffice, con excel e incluso le hice un cat
lista.txt | sort desde la linea de comandos del linux,
y en todos los casos los registros se ordenaron
tomando en cuenta el espacio en blanco y colocando al
final los demas registros.

Quiza el modo en el que el postgres ordenaba los
registros es correcto, pero al entregar consultas y
reportes a los usuarios tenia que coincidir con lo que
se obtiene de otros medios. Por lo de los acentos y
las eñes, al menos en mi caso, los campos que se
ordenan tienen caracteres en mayusculas y las eñes no
son determinantes, pero no se como afectaria en otros
casos.

Gracias de nuevo.

Victor Chavez
Merida,Yuc.,Mexico

--- Alvaro Herrera Munoz <alvherre(at)dcc(dot)uchile(dot)cl>
escribió: > On Wed, Nov 19, 2003 at 06:21:55PM -0600,
Victor
> Chavez wrote:
>
> > No entiendo la razon por la cual el espacio que
> existe
> > despues de la cadena 'JUAN' no es tomado en cuenta
> > para ordenar los registros pues como puede
> observarse
> > en los registros que he marcado con *, la
> ordenacion
> > se realiz? como si los otros registros que no
> tienen
> > el asterisco no tuvieran ese espacio en blanco...
>
> > Hay algun modo de indicar el tipo de ordenacion o
> cual
> > puede ser la explicacion de esto, pues otras
> > herramientas como las hojas de calculo por
> ejemplo,
> > primero ordenan los registros con el espacio y
> luego
> > los demas en orden del alfabeto...
>
> Evidentemente quien hizo las otras herramientas no
> tenia mucha idea
> sobre las reglas idiomaticas para ordenar cadenas de
> caracteres. El
> ordenamiento que ves, descartando espacios en
> blanco, es el correcto.
> (No se quien es la autoridad al respecto, pero así
> es).
>
> Si reinicializas (initdb?) la base de datos con
> lc_collate=C deberías
> obtener el resultado que deseas, pero sospecho que
> vas a tener efectos
> secundarios indeseables (no va a ordenar
> correctamente acentos o ñ).
>
> Una alternativa, si el problema te preocupa mucho,
> es que prepares un
> locale propio que considere el ordenamiento que a ti
> te interesa. Pero
> es una tarea ardua y francamente no te lo recomiendo
> en absoluto.
>
> Otra alternativa podría ser algo como
>
> select
> nombre
> from test
> where nombre like 'JUAN%'
> order by substring(nombre from length('JUAN%') for
> 1), nombre;
>
> pero es horrible. Aunque quizás encapsulado en una
> función no sea tan
> grave ...
>
> --
> Alvaro Herrera (<alvherre[(at)]dcc(dot)uchile(dot)cl>)
> FOO MANE PADME HUM

_________________________________________________________
Do You Yahoo!?
La mejor conexión a internet y 25MB extra a tu correo por $100 al mes. http://net.yahoo.com.mx

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Carmen Gloria Sepulveda Dedes 2003-11-20 14:16:28 [Pgsql-ayuda] Returns SETOF
Previous Message Alvaro Herrera Munoz 2003-11-20 14:01:12 Re: [Pgsql-ayuda] PostgreSQL-C-libpq