>
> 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 ([email protected])
Para cambiar tu suscripci�n:
http://www.postgresql.org/mailpref/pgsql-es-ayuda