[pgsql-es-ayuda] Problema con ORDER BY
Holas, haber si alguien me puede ayudar, esto tratando de sacar un listado ordenandolo por descripcion con ORDER BY , pero me he dado cuenta que el ORDER BY no reconoce mis caracteres que no sean alfanumericos, por ejemplo: codigo, nombre 100, JUAN 200, LUCHO 300, ARMANDO 400, _JOSE 500, _adrian al hacer un select * from mitabla order by nombre devuelve 500, _adrian 300, ARMANDO 400, _JOSE 100, JUAN 200, LUCHO y deberia mostrar primero los que empiezan por el subguion; he probado con puntos , guiones, asteriscos y siempre devuelve ordenado por el primer caracter alfanumerico, no por los otros; hay forma de que el ORDER BY considere estos caracteres no alfanumericos en la ordenacion. Gracias de antemano -- Jose J. Ayala Pineda (a.k.a. 1nk@H@ck) MSN Messenger: j...@hotmail.com URL/Blog: http://inkahack.blogspot.com Si tú tienes una manzana y yo tengo una manzana y las intercambiamos, entonces ambos aún tendremos una manzana. Pero si tú tienes una idea y yo tengo una idea y las intercambiamos, entonces ambos tendremos dos ideas. George Bernard Shaw
Re: [pgsql-es-ayuda] Problema con ORDER BY
intenta poniendo ASC o DESC El día 5 de septiembre de 2012 19:08, Jose Ayala Pineda jose...@gmail.com escribió: Holas, haber si alguien me puede ayudar, esto tratando de sacar un listado ordenandolo por descripcion con ORDER BY , pero me he dado cuenta que el ORDER BY no reconoce mis caracteres que no sean alfanumericos, por ejemplo: codigo, nombre 100, JUAN 200, LUCHO 300, ARMANDO 400, _JOSE 500, _adrian al hacer un select * from mitabla order by nombre devuelve 500, _adrian 300, ARMANDO 400, _JOSE 100, JUAN 200, LUCHO y deberia mostrar primero los que empiezan por el subguion; he probado con puntos , guiones, asteriscos y siempre devuelve ordenado por el primer caracter alfanumerico, no por los otros; hay forma de que el ORDER BY considere estos caracteres no alfanumericos en la ordenacion. Gracias de antemano -- Jose J. Ayala Pineda (a.k.a. 1nk@H@ck) MSN Messenger: j...@hotmail.com URL/Blog: http://inkahack.blogspot.com Si tú tienes una manzana y yo tengo una manzana y las intercambiamos, entonces ambos aún tendremos una manzana. Pero si tú tienes una idea y yo tengo una idea y las intercambiamos, entonces ambos tendremos dos ideas. George Bernard Shaw -- Salu2 Linux Register User #525697 --==[[Carlos Sing]]==-- - Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org) Para cambiar tu suscripción: http://www.postgresql.org/mailpref/pgsql-es-ayuda
Re: [pgsql-es-ayuda] Problema con ORDER BY
buenas Lista realice la siguiente consulta donde ordeno por el primer carácter: order by substring(a.nombre,1,1) select * from (values(100,'JUAN'),(200,'LUCHO'),(300,'ARMANDO'),(400,'_JOSE'),(500,'_adrian')) as a(codigo, nombre) order by substring(a.nombre,1,1) y genera la siguiente salida: codigo, nombre 400,_JOSE 500,_adrian 300,ARMANDO 100,JUAN 200,LUCHO para organizarlo en el mismo orden del ejemplo iniciar: order by case when substring(a.nombre,1,1)'_' then substring(a.nombre,2,1) else 'z' end select * from (values(100,'JUAN'),(200,'LUCHO'),(300,'ARMANDO'),(400,'_JOSE'),(500,'_adrian')) as a(codigo, nombre) order by case when substring(a.nombre,1,1)'_' then substring(a.nombre,2,1) else 'z' end y genera la siguiente salida: codigo, nombre 300,ARMANDO 100,JUAN 200,LUCHO 400,_JOSE 500,_adrian 2012/9/11 CarloS Sing Ramos carloss...@gmail.com intenta poniendo ASC o DESC El día 5 de septiembre de 2012 19:08, Jose Ayala Pineda jose...@gmail.com escribió: Holas, haber si alguien me puede ayudar, esto tratando de sacar un listado ordenandolo por descripcion con ORDER BY , pero me he dado cuenta que el ORDER BY no reconoce mis caracteres que no sean alfanumericos, por ejemplo: codigo, nombre 100, JUAN 200, LUCHO 300, ARMANDO 400, _JOSE 500, _adrian al hacer un select * from mitabla order by nombre devuelve 500, _adrian 300, ARMANDO 400, _JOSE 100, JUAN 200, LUCHO y deberia mostrar primero los que empiezan por el subguion; he probado con puntos , guiones, asteriscos y siempre devuelve ordenado por el primer caracter alfanumerico, no por los otros; hay forma de que el ORDER BY considere estos caracteres no alfanumericos en la ordenacion. Gracias de antemano -- Jose J. Ayala Pineda (a.k.a. 1nk@H@ck) MSN Messenger: j...@hotmail.com URL/Blog: http://inkahack.blogspot.com Si tú tienes una manzana y yo tengo una manzana y las intercambiamos, entonces ambos aún tendremos una manzana. Pero si tú tienes una idea y yo tengo una idea y las intercambiamos, entonces ambos tendremos dos ideas. George Bernard Shaw -- Salu2 Linux Register User #525697 --==[[Carlos Sing]]==-- - Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org ) Para cambiar tu suscripción: http://www.postgresql.org/mailpref/pgsql-es-ayuda -- Cordialmente, Ing. Hellmuth I. Vargas S. Esp. Telemática y Negocios por Internet Oracle Database 10g Administrator Certified Associate
Re: [pgsql-es-ayuda] Problema con ORDER BY
Gracias por la ayuda, queria ver si alguien podia resolverlo sin tener que hacer uso de otra funcion, solo con el order by clasico; leyendo por ahi me indicaban que el problema es la forma en la que se construyen los indices, y el order by usa estos indices; asi que bueno yo lo solucione asi: select codigo,nombre from mitabla ORDER BY ascii(nombre) Espero q a alguien mas le sirva tmb esto. P.D. No habia visto/conocia esa posibilidad de hacer tablas on the fly como lo hace Hellmut para el ejemplo, excelente aporte para mi :) Saludos El 11 de septiembre de 2012 11:59, Hellmuth Vargas hiv...@gmail.comescribió: buenas Lista realice la siguiente consulta donde ordeno por el primer carácter: order by substring(a.nombre,1,1) select * from (values(100,'JUAN'),(200,'LUCHO'),(300,'ARMANDO'),(400,'_JOSE'),(500,'_adrian')) as a(codigo, nombre) order by substring(a.nombre,1,1) y genera la siguiente salida: codigo, nombre 400,_JOSE 500,_adrian 300,ARMANDO 100,JUAN 200,LUCHO para organizarlo en el mismo orden del ejemplo iniciar: order by case when substring(a.nombre,1,1)'_' then substring(a.nombre,2,1) else 'z' end select * from (values(100,'JUAN'),(200,'LUCHO'),(300,'ARMANDO'),(400,'_JOSE'),(500,'_adrian')) as a(codigo, nombre) order by case when substring(a.nombre,1,1)'_' then substring(a.nombre,2,1) else 'z' end y genera la siguiente salida: codigo, nombre 300,ARMANDO 100,JUAN 200,LUCHO 400,_JOSE 500,_adrian 2012/9/11 CarloS Sing Ramos carloss...@gmail.com intenta poniendo ASC o DESC El día 5 de septiembre de 2012 19:08, Jose Ayala Pineda jose...@gmail.com escribió: Holas, haber si alguien me puede ayudar, esto tratando de sacar un listado ordenandolo por descripcion con ORDER BY , pero me he dado cuenta que el ORDER BY no reconoce mis caracteres que no sean alfanumericos, por ejemplo: codigo, nombre 100, JUAN 200, LUCHO 300, ARMANDO 400, _JOSE 500, _adrian al hacer un select * from mitabla order by nombre devuelve 500, _adrian 300, ARMANDO 400, _JOSE 100, JUAN 200, LUCHO y deberia mostrar primero los que empiezan por el subguion; he probado con puntos , guiones, asteriscos y siempre devuelve ordenado por el primer caracter alfanumerico, no por los otros; hay forma de que el ORDER BY considere estos caracteres no alfanumericos en la ordenacion. Gracias de antemano -- Jose J. Ayala Pineda (a.k.a. 1nk@H@ck) MSN Messenger: j...@hotmail.com URL/Blog: http://inkahack.blogspot.com Si tú tienes una manzana y yo tengo una manzana y las intercambiamos, entonces ambos aún tendremos una manzana. Pero si tú tienes una idea y yo tengo una idea y las intercambiamos, entonces ambos tendremos dos ideas. George Bernard Shaw -- Salu2 Linux Register User #525697 --==[[Carlos Sing]]==-- - Enviado a la lista de correo pgsql-es-ayuda ( pgsql-es-ayuda@postgresql.org) Para cambiar tu suscripción: http://www.postgresql.org/mailpref/pgsql-es-ayuda -- Cordialmente, Ing. Hellmuth I. Vargas S. Esp. Telemática y Negocios por Internet Oracle Database 10g Administrator Certified Associate
Re: [pgsql-es-ayuda] Problema con ORDER BY
Excerpts from Jose Ayala - CROMOTEX's message of mar sep 11 16:08:19 -0300 2012: Gracias por la ayuda, queria ver si alguien podia resolverlo sin tener que hacer uso de otra funcion, solo con el order by clasico; leyendo por ahi me indicaban que el problema es la forma en la que se construyen los indices, y el order by usa estos indices; Esa explicación no tiene sentido. asi que bueno yo lo solucione asi: select codigo,nombre from mitabla ORDER BY ascii(nombre) Hm. Creo que si estás en una versión que soporte COLLATION, es mejor usar eso, porque el ascii() puede fallar en ciertos casos. Tomando el ejemplo de Hellmuth: alvherre=# select * from (values(100,'JUAN'),(200,'LUCHO'),(300,'ARMANDO'),(400,'_JOSE'),(500,'_adrian')) as a(codigo, nombre) order by a.nombre collate C; codigo | nombre +- 300 | ARMANDO 100 | JUAN 200 | LUCHO 400 | _JOSE 500 | _adrian (5 filas) eso es lo que quieres, ¿no? -- Álvaro Herrerahttp://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training Services - Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org) Para cambiar tu suscripci�n: http://www.postgresql.org/mailpref/pgsql-es-ayuda
Re: [pgsql-es-ayuda] Problema con ORDER BY
Uy que bien Alvaro!!, la verdad esta funcionalidad no la conocía :-) order by a.nombre collate C; 2012/9/11 Alvaro Herrera alvhe...@2ndquadrant.com Excerpts from Jose Ayala - CROMOTEX's message of mar sep 11 16:08:19 -0300 2012: Gracias por la ayuda, queria ver si alguien podia resolverlo sin tener que hacer uso de otra funcion, solo con el order by clasico; leyendo por ahi me indicaban que el problema es la forma en la que se construyen los indices, y el order by usa estos indices; Esa explicación no tiene sentido. asi que bueno yo lo solucione asi: select codigo,nombre from mitabla ORDER BY ascii(nombre) Hm. Creo que si estás en una versión que soporte COLLATION, es mejor usar eso, porque el ascii() puede fallar en ciertos casos. Tomando el ejemplo de Hellmuth: alvherre=# select * from (values(100,'JUAN'),(200,'LUCHO'),(300,'ARMANDO'),(400,'_JOSE'),(500,'_adrian')) as a(codigo, nombre) order by a.nombre collate C; codigo | nombre +- 300 | ARMANDO 100 | JUAN 200 | LUCHO 400 | _JOSE 500 | _adrian (5 filas) eso es lo que quieres, ¿no? -- Álvaro Herrerahttp://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training Services -- Cordialmente, Ing. Hellmuth I. Vargas S.