> 
> Buen dia
> Necesito hacer un ordenamiento como el siguiente:
> 
> 
> ALVARES
> DE LA CRUZ
> DE TRINIDAD
> FONSECA
> MENDOZA
> NORORI
> ÑURINDA
> OSORIO
> 
> 
> hago un order by collate "C" y el resultado es
> 
> 
> 
> ALVARES
> DE LA CRUZ
> DE TRINIDAD
> FONSECA
> MENDOZA
> NORORI
> OSORIO
> 
> ÑURINDA
> 
> 
> 
> quedando la letra Ñ al final, debiendo quedar después de la N

Si, es el comportamiento esperado para la Collation "C" (de acuerdo a las docs):
"""
On all platforms, the collations named default, C, and POSIX are available. 
Additional collations may be available depending on operating system support. 
The default collation selects the LC_COLLATE and LC_CTYPE values specified at 
database creation time. The C and POSIX collations both specify "traditional C" 
behavior, in which only the ASCII letters "A" through "Z" are treated as 
letters, and sorting is done strictly by character code byte values.
"""

Tenes que especificar una collation que respete las normas de ordenamiento 
correspondiente a tu idioma:

postgres=# with apellidos (apellido) as (values ('ALVARES'),
('DE LA CRUZ'),
('DE TRINIDAD'),
('FONSECA'),
('MENDOZA'),
('NORORI'),
('OSORIO'),
('ÑURINDA')

)

select * from apellidos order by apellido collate "es_AR";
  apellido   
-------------
 ALVARES
 DE LA CRUZ
 DE TRINIDAD
 FONSECA
 MENDOZA
 NORORI
 ÑURINDA
 OSORIO
(8 filas)

Por cierto, por que usas collation "C"? Cual es la default collation para la 
base en la que estas trabajando?

Gerardo

-
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

Responder a