PostgreSQL - Como diferenciar mayusculas en un ORDER BY?

   
Vista:

Como diferenciar mayusculas en un ORDER BY?

Publicado por Nicolas (2 intervenciones) el 04/12/2007 14:34:32
Ya he estado buscando pero no encontre ninguna solucion concreta. Es muy simple solo necesito ordenar un campo varchar el cual contiene nombres que empiezan algunos con Mayuscula y otros con minuscula, la idea es que no diferencie entre ambas para así poder ordenarlos correctamente.
Desde ya muchas gracias
Nicolas
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Como diferenciar mayusculas en un ORDER BY?

Publicado por Franklin Gamboa (27 intervenciones) el 04/12/2007 16:06:39
Buenas,

Lo que tienes que hacer es convertir el string a un único caso para que no tengas ese problema.

Al hacer un order by, la base de datos NO sabe si A está antes o después que B, entonces la base de datos convierte a ASCII las letras, entonces al convertir la A a ASCII obtenemos 0x41; si lo hacemos con B obtenemos 0x42, entonces ahora la base de datos si puede saber quien va primero. Como mayusculas y minusculas tienen códigos ASCII siferentes, al hacer order by por el campo te va a mostrar mayusculas por un lado y minusculas por otro; a esto viene la necesidad de pasar todos los datos al mismo case para poder ordenarlos de modo correcto.

Un ejemplo (no lo probé en postgres, pero es SQL 92 así que debe funcionar sin problema) es el siguiente.

select *
from clientes
order by lower(nombre) asc

Saludos,

Franklin
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Como diferenciar mayusculas en un ORDER BY?

Publicado por Nicolas (2 intervenciones) el 04/12/2007 16:35:58
Muchas gracias Franklin! Funciona perfecto y agradezco también la explicación que diste.
Hasta Pronto..
Nicolas
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar