Skip site navigation (1) Skip section navigation (2)

Re: Problema con ordenar ignora espacios

From: Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
To: Urko <urko(at)7itria(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Problema con ordenar ignora espacios
Date: 2006-01-25 13:37:23
Message-ID: 20060125133723.GA996@surnet.cl (view raw or flat)
Thread:
Lists: pgsql-es-ayuda
Urko escribió:

> Buenos dias y gracias de antemano

Buenos dias, de nada de antemano.

> Cuando accedo a los datos ya sea desde el open office o el pgadmin
>  
>       PABLO MARTIN DIAZ
>       SILVIA MARTIN ESCUDERO
>       CLAUDIA MARTINEZ VILLA
>       JESUS MARTIN FERNANDEZ
>       JULIA MARTIN GARCIA
> 
> Lo unico que he concluido es que ignora los espacios.

Efectivamente; y no es solo Postgres, sino que cualquier programa que
ordene hara esto (programas decentes por supuesto.  Siempre es factible
encontrar programas mal hechos que simplemente comparan bytes).  Por
ejemplo, sort entrega esto:

$ sort < entrada 
MARTIN DIAZ
MARTIN ESCUDERO
MARTINEZ VILLA
MARTIN FERNANDEZ
MARTIN GARCIA

(le tuve que quitar los nombres del principio, pues es obvio que el
ordenamiento lo hiciste asi).  Esto sucede porque la definicion de
ordenamiento esta definido de esta manera en la biblioteca C, es decir
es parte del "sistema operativo" y no es realmente culpa de Postgres.

Con sort puedes decirle que use solamente el primer "campo":

$ sort -k1,1 < entrada 
MARTIN DIAZ
MARTIN ESCUDERO
MARTIN FERNANDEZ
MARTIN GARCIA
MARTINEZ VILLA

cosa que, hasta donde se, no se puede hacer con Postgres.

> Es eso posible, se puede desactivar de alguna forma

Creo que lo que deberias hacer es normalizar la base de datos, separando
los apellidos maternos de los paternos; esto ademas te salvara el culo
cuando tengas que comparar apellidos compuestos como "DEL RIO" con "DE
LA FUENTE" y "DÉLANO", puesto que el listado ordenado debe ser

DE LA FUENTE
DÉLANO
DEL RIO

y por lo tanto no es simple cosa de decirle que no ignore los espacios,
porque te daria este otro resultado:

$ LC_ALL=C sort  < entrada 
DE LA FUENTE
DEL RIO
DÉLANO

cosa que evidentemente no es correcta.

De nada a posteriori,

-- 
Alvaro Herrera                           Developer, http://www.PostgreSQL.org
Al principio era UNIX, y UNIX habló y dijo: "Hello world\n".
No dijo "Hello New Jersey\n", ni "Hello USA\n".

In response to

Responses

pgsql-es-ayuda by date

Next:From: Edwin QuijadaDate: 2006-01-25 14:40:20
Subject: RE: manejo de case studio y postgresql
Previous:From: David PrietoDate: 2006-01-25 13:30:45
Subject: RE: Hace pg_dump desde windows con php.

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group