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