[Pgsql-ayuda] Orden de Caracteres

Manuel Sugawara masm@fciencias.unam.mx
09 Dec 2003 12:42:07 -0600


Victor Chavez <vchavezp@yahoo.com> writes:

> Hola. Saludos a Todos.
>=20
> Tengo campos que contienen la letra =D1 y cuando quiero
> ordenar los registros tomando como llave esos campos
> siempre envia la =D1 al final. Existe algun modo de
> hacer que se tome el orden alfabetico
> ...L-M-N-=D1-O...,etc.?
>=20
> Intente crear la base de datos usando diferentes tipos
> de ENCODING como LATIN1, SQL_ASCII, etc, pero no veo
> que se refleje algun cambio en la ordenaci=F3n de los
> caracteres. Creo que esto del encoding tiene mas
> relacion con poder almacenar estos caracteres que con
> ordenarlos. Es esto correcto?

Si, pero toma en cuenta que algunas codificaciones no soportan todos
los car=E1cteres del espa=F1ol, como latin9 o ascii. Tienes que
seleccionar, adem=E1s de la codificaci=F3n, la localizaci=F3n adecuada ya
que no existe una forma universal de ordernar letras. La localizaci=F3n
define las reglas locales a tu idioma/pa=EDs para el manejo de
car=E1cteres (definir cuando uno es may=FAscula y cuando es min=FAscula o
cuando es letra), as=ED como la ordenaci=F3n de las palabras (entre otras
cosas como formatos de fechas, moneda, etc).

Para seleccionar la localizaci=F3n adecuada es necesario hacer initdb y
no se puede cambiar al vuelo :-(, pero generalmente no es taan
terrible. Establece la variable de ambiente LANG de forma adecuada y
despu=E9s ejecuta initdb, por ejemplo

$ LANG=3Des_MX initdb -D ~/data -E latin1

Revisa la p=E1gina del manual de initdb(1) para ver los detalles acerca
de los par=E1metros a usar.

Saludos,
Manuel.